• 締切済み

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]); } } どこか間違っているのですか?それとも何か足りないのでしょうか? お願いします。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> どこか間違っているのですか?それとも何か足りないのでしょうか? どう振る舞うことを期待しているのか、その内容によります。 まあ、そんなこととは別に(ほぼ)確実に間違っているのは、main関数の返却値型がvoid型だということぐらいです。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

文字型と intを比較して問題なかったっけ? 数字の1とアスキーコードの1は別物だよね? &str[]は宣言しなくて良かったっけ? 変数宣言てこうだっけ?「 char str[NAME]」 配列宣言? てか 此処に書くためにそうなったのかも知れないけど 字下げした方が読み手が楽よ

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

以下ようにする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文字までという「仕様」になっていますが、これは勿論バッファオーバーフローでアタックされても文句は言えない、悪い見本(!)です。