C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 結果がでない


(過去ログ 132 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■77888 / inTopicNo.1)  結果がでない
  
□投稿者/ cさん (1回)-(2015/11/27(Fri) 21:25:35)

分類:[C/C++] 

以下は、txtの中の単語をカウントするものです。しかし、実行されても何も出ません。

 条件は以下の通りです。 

1,出現回数は10回
2,スペースで区切られた文字列を数える
 カンマ、ピリオドなどは含まない。
 文字の中のは含める。' や -
3,大文字や小文字は同じものは同じ
4,カウント対象のファイル名はコマンドライン引数で指定されない場合、実行用始後に入力するようにする。

#include<stdio.h>
#include<string.h>
#define MAX 1000 
#define LEN 100
#define NUM -1

int main(int argc, char *argv[])
{
	FILE *fp;
 	char h[MAX][LEN]={'\0'};
	char buf[LEN]; 
 	int count[MAX]={0}; 
	int max=0; 
	int num,i,flg;

	if (argc != 2)
	{
 		printf("コマンド名に続きファイル名を入れてください\n");
 		return -1;
	}
 	fp=fopen(argv[1],"r");

	while(buf=fgetc(fp))!=EOF)
 	{
 		i=0; 
 	}
	while(buf[i])
	{
 		if(buf[i]>='A' && buf[i]<='Z')
 		{
 			buf[i] -= 'A' - 'a'; 
		}
		if(buf[i]==','||buf[i]=='.'||buf[i]=='!'||buf[i]=='?')
		{ 
			buf[i]='\0'; 
		}
		i++;
 	}
	
	num = NUM;
	
	while(flg = 0)
	{
 		for(i=0;i<max;i++)
 		{
	 		if(strcmp(buf,h[i])==0)
			{ 
				num=i;
 				flg = 1;
 			}
 				if(num==NUM)
 				{
					strcpy(h[max],buf); 
	 				count[max]++; 
					max++; 
				}
				else
				{ 
					count[num]++;
 				}
	 	}
	}
 	for(i=0;i<10;i++)
 	{ 
 		printf("%d:\t%-12s:\t%d\n",i+1,h[i],count[i]);
 	}
 	return 0; 
} 




こちらが、1つのFileの内容です。
Down the Rabbit-Hole
 Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, 'and what is the use of a book,' thought Alice 'without pictures or conversation?'
 So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.

引用返信 編集キー/
■77889 / inTopicNo.2)  Re[1]: 結果がでない
□投稿者/ 魔界の仮面弁士 (576回)-(2015/11/27(Fri) 22:21:01)
No77888 (cさん さん) に返信
> しかし、実行されても何も出ません。

C/C++ は専門外ですが、気になった点を。


> while(buf=fgetc(fp))!=EOF)
> {
> i=0;
> }

左丸括弧が 2 個で、右丸括弧が 3 個あるように見えますが、
これでコンパイルできているのでしょうか?

それに、そもそもこのループを通らなかった場合、
変数 i の値は未定義になってしまうように思います。

たとえループを通ったとしても、変数 i に 0 をセットした後、
その i を使うこと無く、幾度も 0 を再セットしているのは
何のためなのでしょうか?


> while(flg = 0)
while(flg == 0) ではなく、
while(flg = 0) になっていますが、
意図的にそうしているのでしょうか?
引用返信 編集キー/
■77890 / inTopicNo.3)  Re[2]: 結果がでない
□投稿者/ hoge (2回)-(2015/11/27(Fri) 22:37:40)
またですか...
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12153011352

http://bbs.wankuma.com/index.cgi?mode=al2&namber=77797
↑の方ですよね?
引用返信 編集キー/
■77897 / inTopicNo.4)  Re[3]: 結果がでない
□投稿者/ WebSurfer (723回)-(2015/11/28(Sat) 00:20:49)
No77890 (hoge さん) に返信
> またですか...
> http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12153011352
>
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=77797
> ↑の方ですよね?

chiebukuro のほうは削除したのでしょうかね?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -