gpt4 book ai didi

c - 为什么 fgets 返回错误的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:47 25 4
gpt4 key购买 nike

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

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....

这种情况下的垃圾是我提到的异常短的字符串。当我打印出 ourList 的内容时,它会返回 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 */
}

关于c - 为什么 fgets 返回错误的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com