我不知道该怎么说,但我知道我做错了什么。
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 */
}