文字列判定プログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マサキ

文字列判定プログラム

#1

投稿記事 by マサキ » 18年前

あらかじめ与えられた文字列の集合に対し、文字を入力して、その集合の要素かどうかを判定するプログラムを作っています。
プログラムの条件としては
1 文字列の集合を、以下の構造体を用いたリストとして記述すること

 struct cell{
char animal[20];
struct cell *next;
};

2 再帰的関数memberを使って、文字列の判定を行うこと。
  memberのプロトタイプ宣言
  int member(char * , struct cell *);
第1引数:文字列 第2引数:リストへのポインタ
  返り値:第1引数の文字列が第2引数のリストの要素なら1を、そうでなければ0を返す。

3 今回、文字列の集合は
  {rat,cat,dog,elephant,horse,bat,hamster}
と与えられている。

4 00と入力すると、プログラム終了

という条件の下私はこのようなプログラムを作りました.(添付ファイル)
このプログラムは、コンパイルはできるのですが、実行するとセグメントエラーをおこしてしまいます。
コンパイル時にエラーが表示されない以上、私の実力ではどうすることもできません。
このプログラムはどこがいけないのでしょうか?
何処を改善すればちゃんと作動するようになるのでしょうか?
是非とも教えていただきたいです。宜しくお願いします。

box

Re:文字列判定プログラム

#2

投稿記事 by box » 18年前

問題点を逐一説明するのがたいへんなので、サンプルコードを提示します。
よろしければ研究してみてください。

しっぽ

Re:文字列判定プログラム

#3

投稿記事 by しっぽ » 18年前

実行時にエラーになるのはポインタaのポイント先を指定しないで、
ポインタaを使用しているためです。

strcpy(a->animal, str1);
で、aが実体のないオブジェクトをポイントしてしまっています。

リストについての復習するのが近道です。

マサキ

Re:文字列判定プログラム

#4

投稿記事 by マサキ » 18年前

おかげさまでプログラムが完成しました。
以前作ったリスト構造のプログラムを復習したとこと、先ほどの自分のプログラムが間違いだらけであることにきづきました。
全然リスト構造を理解できてませんでした。
boxさん、わざわざプログラムまで載せて下さって、どうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る