質問: 下記のようなプログラムを実行したいのですが、うまくいかず悩んでいます。 要素内にうまく単語を読み込めていないようなのですが、原因がわかりません。 改善策をご教授いただけないでしょうか。 【内容】 1入力する単語数を指定 2配列を用いて各要素に単語を入力 3特定の単語(変数b)があればカウントを+1し、次の7要素は比較せず飛ばす 4集計結果を表示する それと、要素をprintfで出力しようとするとき&を使用しないとエラーがおきるのですがなぜなのでしょうか。 ``` #include int main(){ char a[2000],*b="hukuoka"; int i=0,j,n=0; scanf("%d",&j); for(;i
回答: `char a[2000];`と定義した場合 `a`は2000個の文字列ではなく、2000文字分の文字です。 言い換えると最大2000文字の文字列が1つです。 > > それと、要素をprintfで出力しようとするとき&を使用しないとエラーがおきるのですがなぜなのでしょうか。 > > > `a[i]`とは、文字列`a`の`i`番目の1文字を指しているので `%s`が文字**列**を表示するための書式なのでエラーになります。 **追記** 入力した単語をプログラムが覚えておく必要はあるのでしょうか? みた感じ、カウントだけ終わったら忘れても構わないように思います。 > > 次の7要素は比較せず飛ばす > > > 7要素とは、単語7個ですか? 現状のプログラムでは、格納位置を7文字ずらし、末尾の7単語を捨てているだけです。