#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]);
}
这是一个简单的程序,输入一个字符串然后打印它们。当我使用它时,它读取一个字符串
答案 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]);