私の眼には一致しているのですが、関数としてはどうも不一致と判定しているようです。
test.txt
1行目:GAMEPARAM
2行目:NONE
①このtest.txtの1行目(GAMEPARAM)の文字列をfopenで取得する。
②文字列が一致したら"一致"と表示。
③文字列が不一致なら"不一致"と表示。
流れはこのような形です。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define STRNUM 256 //読み書き文字列数
#define STRINI "GAMEPARAM" //1行目の文字列
int main(void)
{
//ローカル変数定義
FILE *p_file; //ファイルオープン
char *fileName = "test.txt"; //オープンするファイル
int ret = 0; //関数の戻り値
char fileString[STRNUM]; //ファイル読み書き
//変数の初期化
strcpy(fileString, "");
p_file = fopen(fileName, "r"); //ファイルを読み込みモードでオープン
if(p_file == NULL) //ファイルを読み込める状態でなければ
{
return 0; //閉じる
}
fgets(fileString, STRNUM, p_file); //1行目を読み込む
fclose(p_file);
printf("%s",fileString); //※ここでは「GAMEPARAM」と表示される。
if(strcmp(fileString, "GAMEPARAM"))
{
printf("不一致 %d",strcmp(fileString, "GAMEPARAM")); //※ここでは「1」と表示される。
}
else
{
printf("一致 %d",strcmp(fileString, fileString)); //※ここでは「0」と表示される。
}
return 0;
}
これを実行すると、どうしても不一致側を表示してしまいます。
念のために、STRINIを「GAMEPARAM\0」とNULL文字を入れたものにしてみましたが、だめでした。
どこがおかしいのでしょうか。。。?