質問: C言語についての質問です。 1文字ずつ標準入力で受け取った文字列に対して、数字の部分だけを"*"にかえて表示するプログラムを作りたいのですが、うまくいきません・・・。 fgetcで得たintで表される文字列(ch)をうまく処理できません。 ``` #include #include //#include int main(){ int ch; char buff[100]; int i=0; //char numstr; while((ch=fgetc(stdin)) !=EOF ){ //printf("%d\n",ch); buff[i]=ch; // printf("%s",buff); //sprintf(numstr,"%d",ch); if(ch=="1"||"2"||"3")fputc(ch,stdout); //のような処理をしたい else printf(""); i++; } return 0; } ``` よろしくお願いいたします。
回答: 1文字を比較する場合は、一重引用符で囲まれた**文字リテラル**と比較しましょう。 ...というより、``に文字種類を判定する関数がありますので、条件に当てはまるのならそれを使うのが手っ取り早いです。 ``` #include /* 中略 */ if(isdigit(ch)) fputc('*',stdout); //のような処理をしたい ```