在获取字符串后,C语言中的fgets多次打印

时间:2016-11-12 22:17:55

标签: c loops printf fgets

我有那个代码,当用户给出“###”时,我希望我的循环完成。

xor ax,ax
dec ah
shr ax,14
add ax,ax

到目前为止还可以,但是当用户输入大于11个字符的输入时,我会有多个“Give String”打印件。 我用int main(){ char s[10]; printf("Give string: "); fgets(s,11,stdin); do{ printf("Give string: "); fgets(s,11,stdin); }while ( s!="###" ); return 0; } 尝试,我做对了。任何人都可以通过scanf为我提供解决方案吗? I mean the output looks like this.

1 个答案:

答案 0 :(得分:0)

C字符串不支持直接比较,您需要strcmp,所以

while ( s!="###" )应为while(strcmp(s,"###"))

此外,您还需要从\n移除fgets(以便strcmp忽略\n)。所以do..while应该是这样的:

do{
    printf("Give string: ");
    fgets(s,11,stdin);
    s[strlen(s) - 1] = '\0'; 
} while (strcmp(s,"###"));