我想在一个循环中一个接一个地扫描和打印两个字符串。但是我不能这样做。如果我使用循环,则只有一个字符串被扫描和打印。如果我尝试在没有循环的情况下打印,则两个“get()”工作正常。

#include <stdio.h>

int main()
{
int T,i,j;
char name1[100];
char name2[100];
scanf("%d",&T);
for(i=0; i<T; i++)
{
    printf("Case %d: ",i+1);
    //scanf("%[^\n]s",name1);
    gets(name1);
    /*for(j=0; j<strlen(name1); j++)
    {
        printf("%c",name1[j]);
    }*/
    puts(name1);
    //scanf("%[^\n]s",name2);
    gets(name2);
    /*for(j=0; j<strlen(name2); j++)
    {
        printf("%c",name2[j]);
    }*/
    puts(name2);
}
}

最佳答案

干得好。使用fflush(stdin)。它需要两个输入,然后一个接一个地打印它们。

#include<stdio.h>

int main()
{
int T,i,j;
char name1[100];
char name2[100];
scanf("%d",&T);
for(i=0; i<T; i++)
{
    printf("Case %d: ",i+1);
    fflush(stdin);
    gets(name1);

    gets(name2);

    puts(name1);

    puts(name2);
}
return 0;
}

编辑:如下面的注释所示,如果您不知道要读取的字符数,则不建议使用gets()。

关于c - 在C中读取和打印字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30819330/

10-13 03:29