我正在尝试使用strstr()
来查找第一次出现的双引号(“),但是,当我使用这行代码时:
pch = strstr(tmp,""");
它不会编译,因为我没有终止引用。所以我用了
pch = strstr(tmp,'"');
然后告诉我我有这样的错误:
passing argument 2 of ‘strstr’ makes pointer from integer without a cast [enabled by default]
pch = strstr(tmp,'"'); //finds the first occurrence and deletes the preceeding
^
In file included from /usr/include/stdio.h:29:0,
from assignment1.c:1:
/usr/include/string.h:40:8: note: expected ‘const char *’ but argument is of type ‘int’
char *_EXFUN(strstr,(const char *, const char *));
有关此问题的任何想法或有没有人知道使用strstr检测双引号字符的方法?也许用ascii转换?
提前致谢。
答案 0 :(得分:3)
使用pch = strstr(tmp,"\"");
,它会起作用
答案 1 :(得分:1)
你必须输入\"而不是"
答案 2 :(得分:1)
要在字符串中插入任何特殊字符,您需要用反斜杠转义它。
在转义字符之后,编译器将知道该字符没有正常的角色。 \"
将通知双引号不会像正常一样结束字符串,因此"\""
将导致带有双引号的字符串。
转义序列的完整列表可用here
您可以使用strstr
进行搜索,但如果您只是想找到某个角色的位置,那么strchr
会更快
pch = strchr(tmp,'\"');
答案 3 :(得分:0)
你可以逃避报价!像这样:
pch = strstr(tmp,"\"");