提问人:Anil 提问时间:11/9/2021 最后编辑:halferAnil 更新时间:11/9/2021 访问量:45
for 循环中的 Scanf 问题
Problems with Scanf in a for loop
问:
#define REGISTER (char *[5]) {"REGISTER NEW USER ACCOUNT", "Name:","User ID:", "Password:","Email ID:"}
typedef struct{
int id;
char *name;
char *userID;
char *pwd;
char *emailID;
} password;
password pw={0,"","","",""};
int step=1;
int padding=15;
int y1=7
int x1=0;
int x2=167
int row_1 = sizeof(REGISTER) / sizeof(REGISTER[0]);
for (int i=1; i<=row_1; i++){ // i is corretly initiaised to 1
j=(((x2-x1)-strlen(*(REGISTER+i)))/2)+strlen(*(REGISTER+i));
step += increment;
gotoxy(((x1-padding)+j), (y1+step));
if (i==1){
fflush(stdin);
scanf("%30[^\n]s",pw.name);
}
else if (i==2){
fflush(stdin);
scanf("%12s",pw.userID);
}
else if (i==3){
fflush(stdin);
scanf("%15s",pw.pwd);
}
else {
fflush(stdin);
scanf("%30s",pw.emailID);
}
}
我的scanf无法正常工作。对于 i 的每次迭代,它首先使用 gotoxy,然后 scanf 应该根据 i 获取正确字段的值。
我无法让它正常工作。如果未输入任何值,则光标将正确移动。
但是,如果输入值,它将不可预测地以错误终止,或者将光标移动到某个位置并等待输入。
我只需要在 pw.name 字段中包含空格。
注意:将 Code::blocks 与 gcc 一起使用。
答: 暂无答案
评论
fflush(stdin)
s
%30[^\n]s
%30s
%30[^\n]
i<=row_1
应该是 。否则,您将在阵列外部进行访问。i<row_1