#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char strA[10];
int i, j;
do {
j = 0;
memset(&strA,'\0', sizeof(strA));
printf("Please enter your password: ");
fgets (strA,10,stdin);
printf("\n%s\n\n",strA);
if (strlen(strA) > 8) {
printf("That password is too long\n");
}
else {
j++;
}
} while (j<1);
return 0;
}
你好。我在一个小圈子里跑。我首先测试输入的字符串是否太长,然后在字符串太长时再次提示输入字符串(让dowhile重新开始)。问题是,从太长的字符串(从
fgets()
中截取的额外字符设置为10)的结转在dowhile循环的第二次、第三次等迭代中输入,直到字符串的其余部分最终满足else语句,dowhile终止。我需要dowhile循环的每次迭代都是一个新的开始,在这里手动输入一个字符串。有人能帮忙吗?替换:
fgets (strA,10,stdin);
使用:
scanf("%10s", strA);
同样的问题。
最佳答案
试试这个
fgets (strA,10,stdin);
int c; // Notice that I declared c as int (getchar() returns int)
while((c = getchar()) != '\n' && c != EOF) // This will consume all the previous characters left in the buffer
;
关于c - fgets()/scanf()do-while循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22538616/