-1

出于某种原因,当我发送 argv 时,它会发回错误的文件指针。例如,如果我从 getty.txt 的 argv 发送字符串,它会发回抖动文件指针,如果我发送 genesis.txt 字符数组,它会发回 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;
}

输入:

grep getty.txt genesis.txt shakes.txt

输出:

盖蒂.txt

Shakes.txt:所有的词都是一个舞台,

Shakes.txt:所有的男人和女人都只是球员。

Shakes.txt:他们有自己的出口和入口;

创世纪.txt

getty.txt:四分,七年前,我们的父亲在此生下

getty.txt:大陆,一个新的国家,在自由中孕育,并致力于

震动.txt

4

1 回答 1

0

如果字符串匹配,C strcmp返回 0。尝试:

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