c
1char name[50]; 2 3while(1) 4 while(1) { 5 c = fgetc(sfp); 6 if('A' <= c && c <= 'Z') c += 32; 7 if('a' > c || c > 'z') break; 8 name[i] = c; 9 i++; 10 } 11 if(c == EOF) break; 12 name[i] = '\n'; 13 tinsert(root, name); 14 15 i = 0; 16 }
上のコードで、sfpから一文字読み込み、その文字が大文字なら小文字に変換後name[i]に代入したいのですが、実行するとうまくいかずname[i] = cのところで例外が発生しました。と出てきます。なにが原因で、どのように変更すれば良いのでしょうか?
やりたいことは、英語で書かれたファイルから1単語ずつ読み込んで単語数を数えようとしてます。
"追記"
tinsertはname[50]に入れた単語を2分木に格納する関数です。
試したこと
c
1 int i; 2 char name[5] = "abcde"; 3 char a[5]; 4 for(i=0; i<5; i++) { 5 a[i] = name[i]; 6 } 7 for(i=0; i<5; i++) { 8 printf("%c", a[i]); 9 } 10 puts(" "); 11 printf("%s\n", a);
実行結果
abcde
abcdeabcde
試したことは、同じようなコードを書いて文字配列に一文字ずつ代入できるか確認してみました。しかし、char a[5]を%sで一文字ずつ表示すると何故かabcdeが2回表示されました。ここら辺の理由がわかっていません。
上のコードはプログラムの一部しかアップされていません。
プログラムの全体をアップしてください。
回答5件
あなたの回答
tips
プレビュー