#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()
。我首先测试输入的字符串是否太长,然后如果字符串太长则提示再次输入字符串(通过让dowhile重新开始)。问题是从一个太长的字符串(从fgets()
被剪切的额外字符被设置为10)的结转在dowhile循环的第二次,第三次等等的迭代中被输入,直到最终字符串的其余部分满足else语句,并且dowhile终止。我需要将dowhile循环的每次迭代作为手动输入字符串的新起点。有人可以帮忙吗?
取代:
fgets (strA,10,stdin);
使用:
scanf("%10s", strA);
同样的问题。
答案 0 :(得分:3)
试试这个
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
;