[2353] Re:! isalnum(ch);
投稿者:(ぱ)こと管理人
2024/01/09 00:59:36
>はじめまして。
はじめまして。質問ありがとうございます。
>List 1-10 get_word.c内の
>上記の!isalnum(ch)が(真)の為、20行目のbuf[len]=ch;には
>入力(stdin)時に文字以外の記号などがあれば格納されしまうと思うのです。
英数字以外の記号などが来た場合、isalnum(ch)はfalseですから、
それに!を付けた「!isalnum(ch)」は真になります。
そして、「!isalnum(ch)」が真(かつファイルが終わらない)間、
11~12行目のループがぐるぐる回りますから、英数字以外の文字を読み飛ばすことになって、
17行目では「ここで,chには,単語の最初の文字が格納されている」ことになります。
ええと、11行目のwhile文について、波括弧を省略したのが誤解を招いたでしょうか。
10: /* 空白文字の読み飛ばし */
11: while ((ch = getc(fp)) != EOF && !isalnum(ch)) {
12: ;
13: }
これなら、読み飛ばしている感じがつかめるでしょうか。
ところで、細かいツッコミですみませんが、
>1-4-6「関数の因数として配列を渡す(つもり)」
正しくは「因数」ではなくて「引数」ですが、誤変換さておき、
「引数」の読みは「ひきすう」です。念のため。