【发布时间】:2020-07-01 23:40:04
【问题描述】:
我正在尝试做一些棘手的事情。
我想打开一个文件,并检查该文件是否包含子字符串:echo %.c。
正是这个子字符串:echo,后跟一个百分号,后跟一个点,然后是字符 c。
我只需要找到用于strstr 的正确语法。
我的代码:
FILE *search = fopen(file, "r");
if (!search) {
errx(2, "File not found.");
exit(2);
}
char line[8193];
bool check = false;
while (fgets(line, sizeof(line), search)) {
if (strstr(line, "echo %.c")) {
ck = true;
}
}
fclose(search);
这不起作用,因为这是printf 的保留语法。如何更改它才能正常工作?
【问题讨论】:
-
“printf 的保留语法”是什么意思? printf 格式字符串语法在
strstr()中是无关紧要的——它只接受你给它的字符串,没有格式化/解释。 -
它将查找字符串“echo %.c”。没有“printf 的保留语法”。
-
如果这是“近似代码”(例如
ck)并且您也从fgets获得了搜索字符串,它可以包含换行符,因此只有出现在末尾才会匹配行的。 -
确切的错误信息是什么,它来自哪里?同时发布完整的代码。
-
你应该发布你的确切代码,你用来测试的那个......而不是它的副本......正如答案之一所说:你有一些差异使你的程序不是可执行文件,因此如果您发布的内容不是您测试的内容,您可以消除一些问题。
标签: c arrays string file pointers