我不知道该怎么说,但我知道我做错了什么。

char *temp2= "/shares/mJim";
char ourList[1024];

fgets(ourList, 1024, modified)

sprintf(sysString, "grep -c %s %s", ourList, temp2);

现在fgets完成了它的工作,但是当我试图用sprintf形成这个字符串时,我得到了grep -c Lanuncher.ini而其余的都不见了。如果我把顺序颠倒过来,这就是关键:
sprintf(sysString, "grep -c %s %s", temp2, ourList);

结果将是我想要的,但是对grep的无效搜索:grep -c /shares/mJim Lanucher.ini
如果我这样做:
sprintf(sysString, "grep -c %s %s", temp2, temp2);

它创建所需的字符串(grep -c /shares/mJim /shares/mJim)。有人知道怎么回事吗?
输入一个简单的文本文件,它是一个单列列表:
Launcher.ini
bits.exe
etc....

本例中的垃圾是我提到的异常短的字符串。当我打印出我们的列表时,它会返回Launcher.ini。

最佳答案

fgets包括一个尾随的'\n'。您可能想在生成sysString之前删除它。。。

fgets(ourList, sizeof ourList, modified);
size_t ourListlen = strlen(ourList);
if (ourListlen && (ourList[ourListlen - 1] == '\n')) {
    ourList[--ourListlen] = 0; /* remove trailing '\n' and update ourListlen */
}

10-06 10:29