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

小文字のみを表示させるプログラミングがいくらやってもできません。範囲指定をどこですれば良いのかわからず、全部の文字数をカウントしてしまいます。

ご指摘お願いします。


#include <stdio.h>
#include <string.h>
int main(void)
{
char str[256];
int a;
printf("大文字と小文字をランダムに入力\n");
gets(str);
printf("小文字の数は%dです\n",strlen(str),a);
return(0);
}

A 回答 (9件)

恐らく何かの課題なのだろうけど


単に文字数をカウントするのが目的の課題なら、islowerを使うのが早道でしょうし

文字コードという点に着目する課題であるなら、
if (('a' <= str[i]) && (str[i] <= 'z'))
という判定をする方が趣旨に添っているでしょうね。

課題であれば必ずその前段で課題の元になるであろうテーマが解説されているはずだから
質問者がそのテーマ解説を理解していないので、方針が定まらないのでしょうね。
    • good
    • 0

ちなみにアドバイスですけど、



「C 小文字 判定」でぐぐれば、すぐにislowerというのがヒットします。自分で調べる癖をつけておいたほうがよいですよ。
それと、ビルドエラーについてですが、解決できないなら、そのビルドエラーを貼り付けてみてください。
    • good
    • 0

No.4です。


えっと、プログラムを初めて作ってるレベルなのかな。
int a;の次の行に入れてもだめでしょう。
gets(str)で読み込んでいるんですよね?
したがって、gets(str)の次です。

コンパイルエラーについてですが、おそらく私が書いたのが間違っているかもしれません。これ、JavaならOKという例です。Cの記述になおしてください。
あと、No.6さんが教えてくださっているとおり、islowerというのを使うとよりきれいになります。
    • good
    • 0

幸いなことに、Cの標準関数にはislower()という、


「引数で指定した文字が英小文字かどうかを判定する」関数(もしくはマクロ)が
備わっています。
入力した文字列全体を1文字ずつ読んではislowerで判定させればよいです。
    • good
    • 0

「範囲指定」って何のことだろう.


それぞれの文字に対し「その文字が小文字だったら 1を加える」って書くだけなんだけどね. ある文字が小文字かどうかを判定する方法はわかってますか? 分からないと, 全くお話になりませんよ.
ってか, こんなのわざわざ gets 使うまでもなく getchar でいいじゃん.
指摘は以上.
構文も違うけど, それ以上に「小文字かどうか」をそんなふうに判定してはいけない>#4.
    • good
    • 0

センスないなあ。

いや冗談です。

Cの構文忘れたので間違っていたらごめんなさい。

int count = 0;
for (int i = 0; i < str.length; i++) {
if (('a' <= str[i]) && (str[i] <= 'z')) {
count++;
}
}

countにカウントされます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今のを、int a;のところから入れても、ビルドの時にエラーが出てきてしまいます。
どこに入れたらいいのでしょうか?

申し訳ありませんが、よろしくお願いします。

お礼日時:2009/05/20 15:37

>gets(str);



この関数で、文字列として取得しますよね?
この文字列内には、大文字も小文字も混じっているのでしょう?
ヒョッとしたら、数字や記号も?

なので、文字列を1文字ずつに分解(というか切り出し)して
その一個の文字がどういったモノなのか?(大文字?小文字?数字?その他?)判断し
条件に一致するモノだけを、加算するなり、印字するなり・・・・

と言う風に、漠然と思考するのではなく一つ一つ物事を噛み砕いて考えましょう。
    • good
    • 0
この回答へのお礼

他の方法でやってみても、エラーが出てしまうので
漠然とした考えになってしまいました。
どこで、判断をすればいいのでしょうか?

お礼日時:2009/05/20 15:40

変数 a の用途は何ですか?

    • good
    • 0

小文字のみをカウントする関数を作らないとダメなのでは?

    • good
    • 0

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