-1

何らかの理由で 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

4

1 に答える 1

0

文字列が一致する場合、 C strcmpは 0 を返します。試す:

if(strcmp(a, b) == 0) {/* ... */}
于 2013-07-31T05:05:16.387 に答える