如何在C中存储字符串数组并将其打印回来?

如何在C中存储字符串数组并将其打印回来?,c,arrays,visual-c++,C,Arrays,Visual C++,我正在学习Brian Kenningham和Dennis Ritchie的《C编程语言》 我被困在1.9个字符的数组中 我试图允许用户在CMD中输入多行文本,然后将这些文本存储在strings参数数组中,供其他程序使用。每一新行都应作为数组中的新对象存储。现在我要做的就是将数组打印回CMD,这样我就可以看到它正常工作了,你知道我做错了什么吗 #include <stdio.h> int main(char string[]) { int c, i; cha

我正在学习Brian Kenningham和Dennis Ritchie的《C编程语言》

我被困在1.9个字符的数组中

我试图允许用户在CMD中输入多行文本,然后将这些文本存储在strings参数数组中,供其他程序使用。每一新行都应作为数组中的新对象存储。现在我要做的就是将数组打印回CMD,这样我就可以看到它正常工作了,你知道我做错了什么吗

    #include <stdio.h>
 int main(char string[])
 {
    int c, i;
    char * strs[i];
      for (i=0; i<5 && (c!=EOF()) && c!='\n'; i++){
         strs[i] = c;
      }
      for(i=0; i<5; ++i)
         puts(strs[i]);
 }
#包括
int main(字符字符串[])
{
int c,i;
字符*strs[i];

对于(i=0;i,您的代码中有很多错误

  • 您的
    main()
    原型错误,它应该是
    int main(int argc,char*argv[]);
    或类似的东西。删除初始的
    int
    参数是不正确的
  • 如果将
    strs
    声明为字符指针数组(没有有效的大小!),则可能需要完整的2D字符数组,如
    char-strs[100][32];
    。有限,但更易于管理
  • 您正在存储字符,因此需要跟踪当前字符串中的当前字符索引。
    strs[i]=c;
    应该类似于
    strs[i][j++]=c;
    。当然,您还必须考虑每个字符串的最大长度,并正确终止字符串
  • 您需要在换行符上跳转到下一个字符串(增量
    i

  • 是不是另一个错误是变量c的未初始化值(或者可能是c的垃圾值)?基本上我怀疑这个程序中是否有任何正确的地方。非常感谢