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;
}
C言語も文字判定する関数なんですが・・・
C言語も文字判定する関数なんですが・・・
2箇所わからないところがあります
Re: C言語も文字判定する関数なんですが・・・
「変えす」が「変える」の事だと仮定→変え方によります。ポッター さんが書きました:このreturn1 とreturn 0 これを変えすとどうなるの?
「変えす」が「返す」の事だと仮定→呼び出し側が渡した数値がShift_JISの2バイト文字の1バイト目の値として有効かどうかを知ることができます。
Shift_JISの2バイト文字の2バイト目と推測されるバイトを読み飛ばしています。ポッター さんが書きました:このgetcharって何しているんですか?]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語も文字判定する関数なんですが・・・
main関数のwhile内のif文はIsKanji1stの返り値によって条件分岐していますが、
IsKanji1stが0を返せばelse ifの方へ、1を返せばif文の中に処理が入ります。
return 0と1を分けているのはその為です。
条件式において0は偽、0以外は真になります。
IsKanji1stが0を返せばelse ifの方へ、1を返せばif文の中に処理が入ります。
return 0と1を分けているのはその為です。
条件式において0は偽、0以外は真になります。