何らかの理由で argv を送信すると、間違ったファイル ポインターが返されます。たとえば、getty.txt の argv から文字列を送信すると、揺れるファイル ポインターが返されます。また、genesis.txt char 配列を送信すると、getty.txt が返されます。正しいファイルポインタを送り返すにはどうすればよいですか?
for (i = 3; i < argc; i++) {
printf("%s\n", argv[i]);
pattern(determineFile(argv[i]), argv[2]);
}
FILE* determineFile(char* file) {
if (strcmp(file,"getty.txt"))
return getty;
else if (strcmp(file, "shakes.txt"))
return shakes;
else if (strcmp(file, "genesis.txt"))
return genesis;
else
return NULL;
}
入力:
getty.txt をgrepする genesis.txt shakes.txt
出力:
getty.txt
shakes.txt: すべての言葉はステージです。
shakes.txt: そして、すべての男性と女性は単なるプレーヤーです。
shakes.txt: 出口と入り口があります。
ジェネシス.txt
getty.txt: 4 スコアと 7 年前、私たちの父親はこの上に生まれました
getty.txt: 大陸、自由に構想され、世界に捧げられた新しい国家
シェイクス.txt