0

次のように2D配列を宣言することは可能ですか?

char words[128][25];

そして、次のように割り当てるだけです。

int i=0;

while(fscanf(fp,"%s" words[i++]) != EOF){  
 printf("Copied");
}  

私はそれをコードスニペットで見ましたが、理解できなかったので、試してみて、この行を実行しようとするとコードブロックからクラッシュしました。そのように宣言されている場合、配列を使用するのは完全に無効な方法ですか?正常にコンパイルされ、実行されません。

4

2 に答える 2

2

これは、配列を使用する合法的な方法です。問題はあなたの間にあるようです:

while(fscanf(fp,"%s words[i++]) == EOF){

の後に引用符とコンマが必要です"%s

于 2013-03-25T15:59:39.123 に答える
2

raptorが説明したことと同様に、EOFに等しい間もループします。これは、ファイルが空でない限り、「コピー」を取得しないことを意味します。おそらく次のことを意味します。

while(fscanf(fp,"%s",words[i++]) != EOF){  
 printf("Copied");
}  
  • 編集:

Whozのコメントを参照すると、これは危険なコードであることは事実です。コードに単語で初期化されるよりも多くの行がある場合、それ以外の例外が発生します。実際に抽出された行(または単語)の数を示します(-1)

于 2013-03-25T16:02:50.427 に答える