#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/

10-11 04:04