我想编写一个程序来读取和写入(向stdout)一组不同的字符串 我的程序出了什么问题,因为它只读取n-1个字符串而不是给定的n?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char** vectorschar;
int n,i;
char c;
printf("n: ");
scanf("%d",&n);
vectorschar=(char**)calloc(n,sizeof(char*));
for(i=0;i<n;i++)
{
vectorschar[i]=(char*)calloc(30,sizeof(char));
}
for(i=0;i<n;i++)
{
gets(vectorschar[i]);
}
for(i=0;i<n;i++)
{
puts(vectorschar[i]);;
}
return 0;
}
答案 0 :(得分:3)
行后
scanf("%d",&n);
执行后,新行字符'\n'
将保留在流中。首次调用gets()
时会使用它。
您可以使用以下方式跳过换行符:
scanf("%d%*[^\n]",&n);
getchar();
答案 1 :(得分:1)