1

Brian Kerningham と Dennis Ritchie による「C プログラミング言語」を勉強しています。

私は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 に答える