我想写一个程序来读和写(到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;
}

最佳答案

排在队伍后面

scanf("%d",&n);

执行时,换行符'\n'留在流中。第一次调用gets()时使用它。
您可以使用以下命令跳过换行符:
scanf("%d%*[^\n]",&n);
getchar();

08-19 19:19