C言語も文字判定する関数なんですが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ポッター

C言語も文字判定する関数なんですが・・・

#1

投稿記事 by ポッター » 10年前

2箇所わからないところがあります

コード:

int IsKanji1st(int c)
{
	unsigned char uch = c;
	if (uch >= 0x81 && uch <= 0x9f || uch >= 0xe0 && uch <= 0xfc) //このreturn1 とreturn 0 これを変えすとどうなるの?
		return 1;
	else
		return 0;
}
int main(int argc, char *argv[])
{
	int n;
	while ((n = getchar()) != EOF)
	{
		if (IsKanji1st(n)){
			getchar(); //このgetcharって何しているんですか?
			continue;
		}
		else if (isalnum(n))
			putchar(n);
	}
	return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: C言語も文字判定する関数なんですが・・・

#2

投稿記事 by みけCAT » 10年前

ポッター さんが書きました:このreturn1 とreturn 0 これを変えすとどうなるの?
「変えす」が「変える」の事だと仮定→変え方によります。
「変えす」が「返す」の事だと仮定→呼び出し側が渡した数値がShift_JISの2バイト文字の1バイト目の値として有効かどうかを知ることができます。
ポッター さんが書きました:このgetcharって何しているんですか?]
Shift_JISの2バイト文字の2バイト目と推測されるバイトを読み飛ばしています。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: C言語も文字判定する関数なんですが・・・

#3

投稿記事 by Dixq (管理人) » 10年前

main関数のwhile内のif文はIsKanji1stの返り値によって条件分岐していますが、
IsKanji1stが0を返せばelse ifの方へ、1を返せばif文の中に処理が入ります。
return 0と1を分けているのはその為です。
条件式において0は偽、0以外は真になります。

閉鎖

“C言語何でも質問掲示板” へ戻る