1

我正在学习 Brian Kerningham 和 Dennis Ritchie 的“The C Programming Language”。

我被困在 1.9 字符数组上。

我试图允许用户在 CMD 中输入多行文本,然后将其存储在字符串参数数组中以供另一个程序使用。每个新行都应存储为数组中的一个新对象。现在我要做的就是将数组打印回 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]);
 }
4

1 回答 1

3

您的代码中有很多错误。

  1. 您的main()原型是错误的,它应该是int main(int argc, char *argv[]);或等效的。删除初始int参数是不行的。
  2. 您声明strs为字符指针数组(没有有效大小!),您可能需要一个完整的 2D 字符数组,例如char strs[100][32];. 有限,但更易于管理。
  3. 您正在存储字符,因此您需要跟踪当前字符串中的当前字符索引是哪个字符索引。strs[i] = c;应该是这样的strs[i][j++] = c;。当然,您还必须尊重每个字符串的最大长度,并正确终止字符串。
  4. 您需要i跳到换行符上的下一个字符串(增量)。
于 2013-05-10T07:06:27.800 回答