[2423] Re:第5章ポインタの真の使い方 単語の使用頻度を数える
    
    投稿者:hdmr
    2025/05/19 21:33:28
    
    
    お疲れ様です。
先生のご指摘の通り、「!isalnum(ch)」となっていました。
この部分を修正し、動作させると実行結果は「ABCDE 1」となりました。
ありがとうございます。
<修正前のget_word.c>
int get_word(char* buf, int buf_size, FILE* fp)
{
	int len;
	int ch = 0;
	/* 空白文字の読み飛ばし */
	while (((ch = getc(fp)) != EOF) && !isalnum(ch))
	{
		;
	}
	if (ch == EOF)
	{
		return EOF;
	}
	/* ここで、chには、単語の最初の文字が格納されている */
	len = 0;
	do
	{
		buf[len] = ch;
		len++;
		if (len >= buf_size)
		{
			/* 単語が長すぎるためエラー */
			fprintf(stderr, "word too long\n");
			exit(1);
		}
	} while (((ch = getc(fp)) != EOF) && !isalnum(ch)); //ミス!!!!
	buf[len] = '\0';
	return len;
}