关于输入的奇怪问题
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "c_funcs.h"
void write_head();
int x_max,x_min;
int y_max,y_min;
int x_abs,y_abs;
long unsigned total_sti;
void main()
{
FILE *fp; //指向输入文件的指针
int i;
char pre; //通常反复优先方向
char infile[15];
char headfile[13];
float x_times,y_times;
int direction,angle;
int head_tail;
int r_xtimes,r_ytimes;
int rep_xdis,rep_ydis;
for (i=0;i<13;i++)
headfile[i]=' ';
printf("\n");
printf("please input filename\n");
scanf("%s",infile);
if ((fp=fopen(infile,"rb"))==NULL) //原文件
{
printf("can't open file ");
exit(0);
}
printf("\n");
//readfileinfo(fp);
//-------------------------输入各种参数--------------------
printf("please input first direction(x~y):"); //优先方向
scanf("%c",&pre);
/*就这里有问题!!!!每次程序都直接跳过,也就是不执行这个scanf语句我觉得很奇怪????其它的都正常*/
printf("please input head to tail times(1~99):"); //首尾反复
scanf("%d",&head_tail);
printf("please input rep_x times(1~9):"); //x方向反复次数
scanf("%d",&r_xtimes);
printf("please input rep_y times(1~9):"); //y方向反复次数
scanf("%d",&r_ytimes);
printf("please input x_displace(-999.9~+999.9):");
scanf("%d",&rep_xdis);
printf("please input y_displace(-999.9~+999.9):");
scanf("%d",&rep_ydis);
printf("----%c",pre);
printf("please input x_direction times:");
scanf("%f",&x_times);
printf("please input y_direction times:");
scanf("%f",&y_times);
printf("please input rotate direction:(0~7)");
scanf("%d",&direction);
printf("please input rotate angle:(0~89)");
scanf("%d",&angle);
//-----------------------------------------
setupstitch(fp,x_times,y_times,direction,angle,head_tail,pre,
r_xtimes,r_ytimes,rep_xdis,rep_ydis);
//--------------------------------------
printf("X+%d,X-:%d,Y+:%d,Y-:%d",x_max,x_min,y_max,y_min);
fclose(fp);
}
不知道各位大虾们又没有碰到这种问题,我如果在出问题的那里改成这样
while ((pre!='x')&&(pre!='y'))
{
printf("please input first direction(x~y):");
scanf("%c",&pre);
printf("%c \n",pre);
}
则循环一次以后就可以正确读入字符 ‘pre’;