質問 |
||
| QNo.3978793 | ループが回らない | |
|---|---|---|
| 質問者:mari_s2 |
#include<stdio.h> #include<string.h> #define HASH_SIZE 100 #define NAME_SIZE 20 char name[ HASH_SIZE ][ NAME_SIZE ]; i int hash_func( char str[] ) { } void main() { char s[ NAME_SIZE ],i; int index ; while(1){ printf("文字を入力!"); scanf("%s",s); if( s[0]='.') break; index = hash_func(s); strcpy( name[ index ],s) ; printf("*\n"); } } このプログラムの 無限ループのところがぜんぜん回らないんです。 自分なりに試行錯誤してみたのですが 限界に達しましたので助言をいただきたいです。 上の関数は今はなにも書いてないですが、 書いてあっても動かないです。 月曜日提出の課題なので なるべく早め回答いただけると幸いです。 アドバイスお待ちしております。 |
|
困り度:
|
||
| 質問投稿日時: 08/04/27 00:50 |
||
回答 |
|
| ANo.6 | edomin2004さんへ 質問文の解釈の仕方が違うようです^^; breakするということは少なくともループを1回回りきるので、「ループがぜんぜん回らない」という表現と不一致するということでANo.4の回答になりました。 質問者さんが、どんな文字を入力してもhash_funcがコールされずにルーチンが終了するという現象を「ループがぜんぜん回らない」と表現しているのなら、まさしくあなたの回答がパーフェクトだと思います。 |
|---|---|
| 回答者:kusa_cw | |
| 種類:補足要求 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/28 13:10 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.5 | 「if( s[0]='.') break; が意図した動作かどうかにかかわらず、ループは回るでしょう。」 とありますが、代入の結果返される値は'.'です。 '.'ならfalseじゃないからtrueでbreak; |
|---|---|
| 回答者:edomin2004 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/04/27 22:02 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.4 | いや、 if( s[0]='.') break; が意図した動作かどうかにかかわらず、ループは回るでしょう。 単純にscanfでブロックしているだけでは? |
|---|---|
| 回答者:kusa_cw | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/27 14:04 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.3 | とりあえず、 if( s[0]='.') break; を if( s[0]=='.') break; に変更する。 s[0]='.'は代入。なので、必ずbreak。 s[0]=='.'は比較。なので、'.'ならbreak。 |
|---|---|
| 回答者:edomin2004 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/04/27 01:00 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.2 | 最近のコンパイラは、ちゃんとこの手のボケにツッコミを入れる能力を獲得しているはずですが? |
|---|---|
| 回答者:koko_u_ | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/04/27 00:59 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.1 | こんばんは。 答えを教えてしまうと力にならないので、ヒントです。 if( s[0]='.') コレは何をしているのか、考えてみてください。 |
|---|---|
| 回答者:manima2 | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/27 00:57 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |