人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語で、以下のプログラムを作っているのですが、画像の31行目のところで"subscripted value is neither array nor pointer"というエラーが出ます。意味は確認したのですがどうすればいいのかよく分かりません。分る方に教えていただきたいです。
---(プログラム概要)---
数字当てゲーム
4桁の数字(ただし,各桁の数字はすべて異なる)を答えとして,define文で指定しておく.
ユーザに4桁の整数を入力させ,入力された数字が答えと同じ,あるいは10回チャレンジすれば終了.
ただしヒントとして,入力された数字と答えを比べ,数字があっていればその個数とF,数字も位もあっていればその個数とTを出力する.
(例)答えが1234の場合
9876と入力されたら,数字があっていないので0F0Tと出力
4367と入力されたら,3,4の2つの数字があっているので2F0Tと出力
5637と入力されたら,3は数字も位もあっているので0F1Tと出力
1274と入力されたら,1,2,4は数字も位もあっているので0F3Tと出力

1349617960
●拡大する

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● 匿名回答1号

#define ANS "1234" と定義し直す。


2 ● 匿名回答2号

ANSを数値で宣言しているのに ANS[kch]とかやってるからですね。

ANSを文字列で宣言するか
ANS[kch]というような使い方をせず 違うやり方でチェックするかのどちからでしょう。

ま、文字列で宣言させるのが一番ラクだと思いますが。


質問者から

回答ありがとうございます。初歩的なミスですね・・・精進します。
もう一つ質問したいのですが、画像18行目のgetsに問題があるようです。
コンパイラすると”the `gets' function is dangerous and should not be used.”と出るのですが、これはどうしてでしょうか?どうすればいいのでしょうか。


3 ● 匿名回答1号

gets は使わないほうが良いと言う警告です。

fgets(dgt,15,stdin);

と書き直す。


4 ● 匿名回答3号

画像18行目のgetsに問題があるようです。
コンパイラすると”the `gets' function is dangerous and should not be used.”と出るのですが、これはどうしてでしょうか?

gets()は仕様的にバッファーオーバーランを起こす関数ですので使用すべきではないということです。
面倒ですがfgets()を使うように書き換えてください。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ