- 締切済み
C言語の初心者です。教えてください
#include<stdio.h> #define NAME 4 void main() { char str[NAME]; int i; for (i = 0;i < NAME;i++){ scanf("%s", &str[i]); } for(i = 0; i < NAME;i++){ printf("%s\n", str[i]); } } どこか間違っているのですか?それとも何か足りないのでしょうか? お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
> どこか間違っているのですか?それとも何か足りないのでしょうか? どう振る舞うことを期待しているのか、その内容によります。 まあ、そんなこととは別に(ほぼ)確実に間違っているのは、main関数の返却値型がvoid型だということぐらいです。
- Nouble
- ベストアンサー率18% (330/1783)
文字型と intを比較して問題なかったっけ? 数字の1とアスキーコードの1は別物だよね? &str[]は宣言しなくて良かったっけ? 変数宣言てこうだっけ?「 char str[NAME]」 配列宣言? てか 此処に書くためにそうなったのかも知れないけど 字下げした方が読み手が楽よ
- chirubou
- ベストアンサー率37% (189/502)
以下ようにするt動きます。 #include<stdio.h> #define NAME 4 int main() { char str[NAME][256]; int i; for (i = 0;i < NAME;i++){ scanf("%s", str[i]); } for(i = 0; i < NAME;i++){ printf("%s?n", str[i]); } return( 0 ); } ですね。まあ細かいところはコードを見てもらうとして、大きな間違いは str[] の定義です。文字列と文字を混同しています。 修正版では簡単に最大256文字までという「仕様」になっていますが、これは勿論バッファオーバーフローでアタックされても文句は言えない、悪い見本(!)です。