Skip to content

文字の比較、strcmp()について

C言語の課題でこんな問題があった。

あらかじめ作成したinput3.txtを読み込む。キーボードから英単語を1つ入力し、その単語がinput3.txtに何個含まれるかを出力するプログラムを作成しなさい。

input3.txtから読み込んだ文字を格納したchar型変数inputの配列と、入力した文字をstrcmp()で処理すればいいだけじゃん♪

と考えたので次のようなプログラムを書いた。

#include<stdio.h>
#include<string.h>

int main(){
FILE *FP;
int loop;
char str;
int count = 0;
char input[81];

scanf(“%c”, &str);

if ((FP = fopen(“input3.txt”, “r”)) == NULL){
printf(“File open error”);
return 1;
}

while (fscanf(FP, “%s”, input) != EOF){
for (loop = 0; loop < strlen(input); loop++){
 if (strcmp(input[loop], str) == 0){
count++;
}
}
}
fclose(FP);

printf(“%cと同じ単語は%d個あります\n”,str,count);

return 0;
}

しかし、キーボード入力した後にエラーがででしまった・・・

 

は?なんでよ??っと思って調べること数分。

strcmp()は文字列しか比較できないということが分かった。

つまり、文字の比較はできないという事だ。

ということなので赤文字と青文字と緑文字の部分を次のようにかえた。

char str[2];

scanf(“%s”, str);

if (strcmp(input[loop], str) == 0)

と変えてもできないし!!

もういいわ。strcmp()使うのやめた(笑)

char str;

scanf(“%c”, &str);

if(input[loop] == str)

はい、できた(笑)

この課題だけで2時間持ってかれるとかあほすぎる・・・

今度からは、しっかり教科書読むようにしよう。

 

Published in未分類

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*