函数跳过一个字符串

时间:2014-06-28 12:46:14

标签: c

#include<stdio.h>
#include<string.h>

int main()
{
  int N;
  int i;

  scanf("%d",&N);
  char A[100][100];

  for(i=0;i<N;i++)
    gets(A[i]);

  for(i=0;i<N;i++)
    printf("%s\n",A[i]);
}

这是一个简单的程序,输入一个字符串然后打印它们。当我使用它时,它读取一个字符串

1 个答案:

答案 0 :(得分:0)

您需要在scanf调用后清理缓冲区,因为其中存储了\n(因为您需要按Enter键输入数字)。你可以用:

char clean; 
while (clean=getchar()!='\n' && clean !=EOF);

这将继续读取stdin缓冲区,直到它清楚。

也避免使用gets,它可能导致缓冲区溢出,改为使用fgets并将流设置为stdin。

代码将是:

int N;
int i;
int clean;
scanf("%d", &N);
while (clean=getchar()!='\n' && clean !=EOF);
char A[100][100];
for (i = 0; i < N; i++)
    fgets(A[i],100,stdin);
for (i = 0; i < N; i++)
    printf("%s\n", A[i]);