アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (12件中1~10件)

使用している文字コードにもよりますが、


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

No.7 追記


質問文読み直して、重要なことを忘れてたのに気がついた。

質問者は「1Byte文字」だとは書いてない。書いてるのは「入力された1文字」。
つまり、入力文字がマルチバイトなのかを最初に確認しないといけない。
    • good
    • 1

本当にベタなら条件は


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

> もっと詳しく書くことは出来ないんですか?


isupper() という用意されている関数を使えば考える必要もなく判断できるのですが、要するに組み込みの関数ではなく、自分で判断をするようにしたいということでしょうか? それでしたら

If(c >= 'A' && c <= 'Z') {
 printf("大文字\n");
} else if(c >= 'a' && c <= 'z') {
 printf("小文字\n");
}
    • good
    • 2

関数の概念が難しいのだと思うので、ベタな方法で書くと…



if ('A' <= c && 'Z' >= c)
{
  printf("英字大文字です");
}
else if ('a' <= c && 'z' >= c)
{
  printf("英字小文字です");
}

※変数cに文字が格納されている

ちなみにこれって、中学校の宿題かなにか?
    • good
    • 0

>もっと詳しく書くことは出来ないんですか?



以下、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は、大文字に対してだけ真を返す。

これ以上詳しい情報が欲しければ、処理系を特定してください。
なお、詳しいことが分かりやすいことに直結するわけではありません。
    • good
    • 0

>もっと詳しく書くことは出来ないんですか?


if(英字大文字の判定)
 「英字大文字です」と表示
else if(英字小文字の判定)
 「英字小文字です」と表示
else
 それ以外をどこまで判定するかは知らん。

「詳しく」書いた。
提示された関数を自分で調べる気もないのなら、関数は使わない説明の方がいいだろ。
    • good
    • 0

>それとも分からないだけでしょうか^^;


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

 


>もっと詳しく書くことは出来ないんですか?

 "isupper"、"islower"。
 
    • good
    • 0

>もっと詳しく書くことは出来ないんですか?



十分すぎるほど回答しました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!