重要課題 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:30行目
中括弧を字下げしてスコープを分かりやすくしてみました。
これでエラーの原因が一目瞭然ですよね?
これでエラーの原因が一目瞭然ですよね?
#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; }