アプリ版:「スタンプのみでお礼する」機能のリリースについて

「1行に1単語が書かれた入力テキストファイル内に対して, 特定の単語(がある行番号とその単語)を画面表示して下さい」と言う問題で、k.txtという文字が書かれたファイルに対して、「play」と言う単語を探す。しかし、単語playerなどに引っかかってはいけない。
以下のプログラムを書いたのですが、期待する結果が出て来ませんでした。どのように直せばいいのでしょうか?至急お願いいたします。

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

#define BUF_SIZE 256

int main(void){
FILE *fp;
const char *filename="k.txt";
char buf[BUF_SIZE];
char *ch;
char str1[] = "play";

fp=fopen(filename, "r");
if(fp==NULL){
printf("Can't Open File %s\n", filename);
exit(1);
}

while(1){
int i=0;
ch=fgets(buf, BUF_SIZE, fp);
if(ch==NULL){
break;
}
if(strcmp(ch,str1) == 0){
printf("line:%d:play",i+1);
break;
}
else{
i++;
}
}

fclose(fp);
return 0;
}

A 回答 (3件)

strcmp は「等しければ 0, 等しくなければそれ以外 (正確にはもうちょっと細かい)」だよ>#1.



さておき「期待する結果が出て来ませんでした」とはどういうこと? どのような入力に対してどのような「結果」を「期待」して, 実際にはどうであったことをそのように呼んでいるのかな?
    • good
    • 1

>「play」と言う単語を探す。

しかし、単語playerなどに引っかかってはいけない。

これは、結構やっかいなことになります。
AplayX
のような単語はNGかとおもいますが
#play/
play.
play@
play&
などはOKなのでしょうか。
    • good
    • 0

if(strcmp(ch,str1) == 0){



if(strcmp(ch,str1)){
ではないですか。
strcmpの仕様がわかりませんが。equal=true,notequal=falseではないかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています