ここから本文です

解決済みの質問

知恵コレに追加する

C言語のプログラム作成について質問があります。

marumaru1961さん

C言語のプログラム作成について質問があります。

ポインタ配列を利用して、10個の単語を単語帳に登録しておき、任意に入れた単語が登録帳のなかにあるかチェックするプラグラムを作成したいのですがどうやってチェックすればいいか分かりません。
#include<stdio.h>
main(){
static char *staff[10];
staff[0] = "ball";
staff[1] = "brack ball";
staff[2] = "red ball";
staff[3] = "blue ball";
staff[4] = "yellow ball";
staff[5] = "black dog";
staff[6] = "black cat";
staff[7] = "black box";
staff[8] = "black door";
staff[9] = "black";


ポインタ配列を利用して10個の単語を登録することまでは出来ました。
任意に入れたというのはscanfを使うらしいのですが、全く想像も出来ません・・・
続きの任意に入れた単語が登録帳にあるかチェックするっていう部分について教えてください。

違反報告

ベストアンサーに選ばれた回答

rhinosugarさん

/*
//@_は補足行
scanf_だと、文字列の途中に空白があるとそこで入力中止
なので、この登録内容では大半がヒットしない。よって
fgetsを使う。そのかわり、入力の最後に改行_'\n'がつく
これは、ここでやっているように'\0'で消しておかないと
これもすべてヒット失敗になる。この説明で分らない部分
は説明書を調べる。1つか2つバグっておきます。
*/

#include<stdio.h>
#include<string.h>//@
main(){
__static_char_*staff[10];
__char__tst[256];//@
__int___k;//@

__staff[0]_=_"ball";
__staff[1]_=_"brack_ball";
__staff[2]_=_"red_ball";
__staff[3]_=_"blue_ball";
__staff[4]_=_"yellow_ball";
__staff[5]_=_"black_dog";
__staff[6]_=_"black_cat";
__staff[7]_=_"black_box";
__staff[8]_=_"black_door";
__staff[9]_=_"black";

__printf("英単語_>_");_fgets(tst,256,stdin);//@
__tst[strlen(tst)-1]_=_'\0';//@_改行を'\0'で消す
__for(k=0;k<10;k++)_{//@
____if(strcmp(staff[k],tst)_==_0)_break;//@
__}//@
__if(k<=10)_printf("登録済みです。\n");//@
__else_printf("未登録です。\n");//@
__return_0;//@
}//@
/*_出力:
英単語_>_red_ball
登録済みです。
*/

質問した人からのコメント

  • ありがとうございました。
  • コメント日時:2009/6/28 21:13:24

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 0点(5点満点中)0人が役に立つと評価しています。

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:C言語関連]

ただいまの回答者

23時31分現在

5010
人が回答!!

1時間以内に9,773件の回答が寄せられています。

>>回答ひろばに行く