あらかじめ決めた文字列の中から、キーボード入力した1つの文字の個数を数えるプログラムを作成したのですが、
作成段階で数点疑問が生まれましたので質問させていただきます。
#include<stdio.h>
#include<string.h>
int countChar(char *string ,char *moji){
int i;
int count=0;
for(i=0;string[i]!='\0';i++){
if(string[i] == moji[0]){
count++;
}
}
printf("%d\n",count);
return count;
}
int main(void){
char String[]="abcdeabbed";
char moji[20];
int ans;
printf(">");
fgets(moji,sizeof(moji),stdin);
moji[strlen(moji) - 1] = '\0'; /* 余分な改行コードを削除 */
ans = countChar(String,moji);
printf("文字列 %s の中に含まれる %s の数は %d\n",String,moji,ans);
return 0;
}
以上が作成したプログラムです。
まず1つ目の疑問として、countCharメソッドの if(string[i] == moji[0])の部分ですが、
最初は if(string[i] == moji) のようにしていてエラーが発生しました。
warning: comparison between pointer and integer ('int' and 'char *')となったのですが、
なぜ左辺はint型と判定されているのでしょうか?char型ではないのでしょうか?
2つ目の疑問として、mainメソッド内で、最後に結果を出力する際、改行コードの\nを入れない場合、
結果の後ろに「%」が表示されます。これはなんなのでしょうか?
どなたか回答の方よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。