• 締切済み

Cで「大文字、小文字の判定」はどう表記すればいいですか?

if文で入力された1文字が英字大文字なら英字大文字です 英字小文字なら英字小文字ですと出る文章を書きたいのですが 大文字小文字の判定方法がわかりません どのような表記なのか教えてください

みんなの回答

回答No.12

使用している文字コードにもよりますが、 'A'~'Z'、'a'~'z'は連続しているとは限らないので If(c >= 'A' && c <= 'Z') {  printf("大文字\n"); } else if(c >= 'a' && c <= 'z') {  printf("小文字\n"); } では上手く動作しない場合があるのでは? isupper islower の使用をお勧めします。

回答No.11

No.7 追記 質問文読み直して、重要なことを忘れてたのに気がついた。 質問者は「1Byte文字」だとは書いてない。書いてるのは「入力された1文字」。 つまり、入力文字がマルチバイトなのかを最初に確認しないといけない。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.10

本当にベタなら条件は c == 'A' || c == 'B' || (中略) || c == 'Y' || c == 'Z' とか c == 'a' || c == 'b' || (中略) || c == 'y' || c == 'z' (もちろん順序を変えてもかまわない) って書かないと>#8. 条件が「英字大文字」とか「英字小文字」ということになると, 厳密にはロケールを適切に設定しないと isupper などでうまく判定できないかも....

  • moritan2
  • ベストアンサー率25% (168/670)
回答No.9

> もっと詳しく書くことは出来ないんですか? isupper() という用意されている関数を使えば考える必要もなく判断できるのですが、要するに組み込みの関数ではなく、自分で判断をするようにしたいということでしょうか? それでしたら If(c >= 'A' && c <= 'Z') {  printf("大文字\n"); } else if(c >= 'a' && c <= 'z') {  printf("小文字\n"); }

  • foofoo0
  • ベストアンサー率42% (39/92)
回答No.8

関数の概念が難しいのだと思うので、ベタな方法で書くと… if ('A' <= c && 'Z' >= c) {   printf("英字大文字です"); } else if ('a' <= c && 'z' >= c) {   printf("英字小文字です"); } ※変数cに文字が格納されている ちなみにこれって、中学校の宿題かなにか?

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.7

>もっと詳しく書くことは出来ないんですか? 以下、JIS X3010:2003から引用 7.4.1.7 islower関数 形式   #include <ctype.h>   int islower(int c); 機能 islower関数は、小文字、又はiscntrl, isdigit, ispunct若しくはisspaceのいずれも真とならない文化圏固有の文字集合の中の文字かどうかを判定する。"C"ロケールでは、islowerは、小文字に対してだけ真を返す。 7.4.1.11 isupper関数 形式   #include <ctype.h>   int isupper(int c); 機能 isupper関数は、大文字、又はiscntrl, isdigit, ispunct若しくはisspaceのいずれも真とならない文化圏固有の文字集合の中の文字かどうかを判定する。"C"ロケールでは、isupperは、大文字に対してだけ真を返す。 これ以上詳しい情報が欲しければ、処理系を特定してください。 なお、詳しいことが分かりやすいことに直結するわけではありません。

回答No.6

>もっと詳しく書くことは出来ないんですか? if(英字大文字の判定)  「英字大文字です」と表示 else if(英字小文字の判定)  「英字小文字です」と表示 else  それ以外をどこまで判定するかは知らん。 「詳しく」書いた。 提示された関数を自分で調べる気もないのなら、関数は使わない説明の方がいいだろ。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.5

>それとも分からないだけでしょうか^^; 正しい回答しているのにこの返事はないと思いますよ isupperで検索するなりされたのでしょうか もう少し詳しく書くとisupper関数で大文字の判定が出来ます 具体的な使用法は#1さんの回答にあるリンク先を見てください

回答No.4

  >もっと詳しく書くことは出来ないんですか?  "isupper"、"islower"。  

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.3

>もっと詳しく書くことは出来ないんですか? 十分すぎるほど回答しました。