[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;
}