假设我有一个由用户asdfgh\hj
输入的字符串,我希望在字符串中找到\
字符的索引。我怎么能在C中做到这一点?
我尝试strchr()
函数为strchr("asdfgh\hj",'\')
,但编译器抛出错误。
然后我使用了==
运算符,但是同样的问题 - 编译器再次抛出错误。
答案 0 :(得分:6)
我尝试
strchr()
函数为strchr("asdfgh\hj",'\')
但编译器抛出错误
这是正确的功能!您收到错误的原因是\
是一个特殊的“转义”字符。它用于定义“特殊”不可打印字符,例如换行符\n
。这就是反斜杠本身\
需要转义的原因,如下所示:
strchr("asdfgh\\hj",'\\')
答案 1 :(得分:1)
试试这个:
strchr("asdfgh\\hj",'\\')
答案 2 :(得分:1)
C标准说,C11 6.4.4.4:
双引号
"
和问号?
可以自己或通过 转义序列分别为\"
和\?
,但单引号'
和反斜杠\
应分别由转义序列\'
和\\
表示。
所以使用
strchr("asdfgh\\hj",'\\')
代替。
答案 3 :(得分:1)
在C中,反斜杠用于像\n
这样的硬类型字符。因此,您需要为\\
本身编写\
:
char *backslash = strch("some text containing \\ ...", '\\');
请注意,在您提供的字符串中,\
也需要写入\\
,否则将被视为\h
没有任何意义。