• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の<ctype.h>のisspace()について教えてください。)

C言語のisspace()関数についての疑問

このQ&Aのポイント
  • C言語の<ctype.h>にはisspace()関数があります。
  • isspace()関数は、引数として与えられた文字が空白類の文字かどうかを判定する関数です。
  • isspace()関数は、int型の引数を受け取り、その文字が空白類の文字なら非0の値を、そうでなければ0を返します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#5537
noname#5537
回答No.3

> そこで疑問なのですが文字列をgetcで取ってきた時にcはEOFの時にマイナスを取るわけですが、 > 問題ないのでしょうか? K&R 2 によると, 「各関数に対し,引数は int で与える。  その値は EOF か,あるいは unsigned char として表現できるものでなければならず,  戻り値は int となる。」 とありますから問題ないでしょう。(「各関数」というのは ctype.h で宣言された各関数のことです。) 心配なら先に EOF でないことをチェックしておけばいいです。

2002hare
質問者

お礼

早急なご回答どうもありがとうございます。 すみません、yoppiiさんに言われた後調べたら載っていました。納得です!!

その他の回答 (2)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.2

こんにちは。どこがわかりませんか?getc のプロトタイプ宣言は int getc(FILE *stream) ですから、ファイルストリームから読み込んだ 文字コードの値を int にキャストして戻してくれるわけです。 ですからキャストの必要はありません、というか EOF との比較ができなくなりますので してはいけません。 また int は符号付き(signed)ですから、EOF(普通は -1)も楽に格納できます。

2002hare
質問者

お礼

早急なご回答どうもありがとうございます。 すみません、主旨がわかりにくい質問ですよね・・。 isspace()の引数に-1を入れてもいいのかどうかが疑問でした。。。失礼しました^^;

  • isobeman
  • ベストアンサー率41% (17/41)
回答No.1

isspace()の引数が対象外の値の場合は0を返すことになっているようですので、問題は無いとは思いますが。 心配でしたら、以下のように書いてみてはどうでしょうか int c; while( (c=getc(fp)) != EOF && !isspace(c) ) { ....... この場合、先に (c=getc(fp)) != EOF がFALSEになった段階で、次の !isspace(c) は評価されなくなります。

2002hare
質問者

お礼

どうもありがとう御座います。 早急なお答え感謝です。

関連するQ&A