無題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kk

無題

#1

投稿記事 by kk » 15年前

重要課題 12..1
参考12.1に示されたfgets()を使い、入力された文字列につい て,1文字ずつその文字の種類を表示し,最後に文字数を表示するプログラムを作 成せよ.文字の種類は,大文字,小文字,数字,その他の文字の4種類とすること.

fgets()では入力された目に見える文字の最後に改行コードとヌル・バイト があるので注意すること。

% ./charType
文字列(20字まで)? Rits-1 ← 文字列を入力
1文字目は R で,大文字です.
2文字目は i で,小文字です.
3文字目は t で,小文字です.
4文字目は s で,小文字です.
5文字目は - で,その他の文字です.
6文字目は 1 で,数字です.
以上6文字です.
%
という問題でわからないことがありました


自分がつくったソース↓

#include<stdio.h>

# define BUFFER_SIZE (256);

int main(void){
char buf[BUFFER_SIZE];
int i;
printf("文字列は(20字まで)?");
fgets(buf, BUFFER_SIZE, stdin);

for(i=0;buf='\n' && i < 20;i++){
if(buf>65 && 90 > buf){
printf("%d文字目は %c で大文字です\n",i+1,buf);
break;
}
else if(buf>97 && buf < 122){
printf("%d文字目は %c で小文字です\n",i+1,buf);
break;
}
else if(buf > 48 && buf){
printf("%d文字目は %c で数字です\n",i+1,buf);
break;
}
else{
printf("%d文字目はその他の文字です");
break;
}
printf("以上です\n");
return 0;
}

で6、9、30行目がエラーになります。どこを直すべきかわかる方おしえてください。

通りすがり

Re:無題

#2

投稿記事 by 通りすがり » 15年前

とりあえず

# define BUFFER_SIZE (256);

のところで#define定義は;はいらないと思われますよ。

kk

Re:30行目

#3

投稿記事 by kk » 15年前

通りすがりさんのおかげでエラーが減りました。
ただ、30行目が「文法エラー at end of input」って表示されます。
どこを直せばよいでしょうか?

バグ

Re:30行目

#4

投稿記事 by バグ » 15年前

中括弧を字下げしてスコープを分かりやすくしてみました。
これでエラーの原因が一目瞭然ですよね?
#include <stdio.h>

# define BUFFER_SIZE (256);

int main(void)
{
    char buf[BUFFER_SIZE];
    int i;

    printf ("文字列は(20字まで)?");
    fgets (buf, BUFFER_SIZE, stdin);

    for (i = 0; buf = '\n' && i < 20; i++)
    {
        if (buf > 65 && buf < 90)
        {
            printf ("%d文字目は %c で大文字です\n", i + 1, buf);
            break;
        }
        else if (buf > 97 && buf < 122)
        {
            printf ("%d文字目は %c で小文字です\n", i + 1, buf);
            break;
        }
        else if (buf > 48 && buf)
        {
            printf ("%d文字目は %c で数字です\n", i + 1, buf);
            break;
        }
        else
        {
            printf ("%d文字目はその他の文字です");
            break;
        }

        printf ("以上です\n");
        return 0;
    }

kk

Re:30行目

#5

投稿記事 by kk » 15年前

できました。ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る