例題にもかかわらず全く分かりません。 どうか教えてください。
これから課題を解くのに、困っています。

入力をEOFまで文字を読込、英小文字、英大文字、数字、空白文字、全文字数を出力するprogramを下記を必ず用いて完成させよう。

* ctype.h をinlcudeし,文字の判定には以下の関数を使おう。

関数説明
int islower(int c) 文字cが小文字かどうかを調べる
int isupper(int c) 文字cが大文字かどうかを調べる
int isdigit(int c) 文字cが数字('0'~'9')かどうかを調べる       int isspace(int c) 文字cが空白文字(' ', '\n', '\t'など)か
どうかを調べる

A 回答 (1件)

is***系の関数は、当該文字であった場合に非0を返します。


使いなれると便利ですので、ぜひ覚えてください。

サンプルプログラムを示します。

#include <ctype.h>
#include <stdio.h>

void check_buf(char* buf)
{
  int lower = 0, upper = 0;
  int digit = 0, space = 0;
  int other = 0;

  for (; *buf; buf++) {
    if (islower(*buf)) // 小文字か?
      lower++;
    else if (isupper(*buf)) // 大文字か?
      upper++;
    else if (isdigit(*buf)) // 数字か?
      digit++;
    else if (isspace(*buf)) // 空白文字か?
      space++;
    else          // 念のため
      other++;
  }

  printf("英小文字: %d, 英大文字: %d, 数字: %d, 空白文字: %d\n",
  lower, upper, digit, space);
  printf("全文字数: %d\n", lower + upper + digit + space + other);
}

int main(void)
{
  char buf[1024];

  printf("文字列を入力してください\n");
  fgets(buf, 1024, stdin); // 標準入力から1023文字まで入力

  check_buf(buf);

  return (0);
}
    • good
    • 0
この回答へのお礼

本当に助かりました。例題の問題が分からなく,本題(問)に取り組む
ことが出来ずに困っていたので,本当に助かりました。ありがとうご
ざいます。私もがんばって使えるようにしていきたいと思います。
本当にありがとうございます。

お礼日時:2009/05/25 22:08

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


人気Q&Aランキング

おすすめ情報