如何输入两个字符串?

时间:2014-04-17 14:15:11

标签: c

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main(void) {
    char a[1001];
    int t,i;
    scanf("%d",&t);

    while(t--)
    {
        fflush(stdin);
        gets(a);
        printf("%d\t",t);
        puts(a);

    }
    return 0;
}

输入:

2 
die another day.
i'm batman.

输出继电器:

1   
0   die another day.

预期产出:

1    die another day.
0    i'm batman.

任何人请帮助如何接受多个字符串没有任何错误。 我能够在输入2后看到我的获取是将换行作为第一个字符串,然后是第二个字符串。 提前致谢

2 个答案:

答案 0 :(得分:2)

停止使用scanf() stdin来读取输入。永远不要拨打fflush(stdin);,但如果您停止使用scanf(),则不再需要。{/ p>

使用fgets()将整行读入适当大小的字符串缓冲区,然后解析所得到的内容。解析字符串的一个很好的函数是sscanf(),它与scanf()类似,只不过它从字符串中读取。

这将更容易,更不烦人​​,而且通常更好。哦,当然从不使用gets()

像这样(未经测试):

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  char line[256];

  if(fgets(line, sizeof line, stdin))
  {
    int count;
    if(sscanf(line, "%d", &count) == 1)
    {
      while(count > 0)
      {
        if(fgets(line, sizeof line, stdin))
        {
          printf("%s", line);
          --count;
        }
        else
          break;
      }
    }
  }
  return EXIT_SUCCESS;
}

答案 1 :(得分:0)

不要使用fflush(stdin)。使用getchar()清除scanf()之后留下的[enter]字符,

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main(void) {
    char a[1001];
    int t,i;
    scanf("%d",&t);
     getchar();
    while(t--)
    {

        gets(a);
        printf("%d\t",t);
        puts(a);

    }
    return 0;
}

它有效。