4

假设我有一个用户输入的字符串asdfgh\hj,我希望找出\字符串中字符的索引。我怎么能在C中做到这一点?

我尝试了strchr()函数 asstrchr("asdfgh\hj",'\')但编译器抛出错误。

然后我使用==了运算符,但同样的问题 - 编译器再次抛出错误。

4

4 回答 4

6

我尝试了strchr()函数 asstrchr("asdfgh\hj",'\')但编译器抛出错误

这是正确的功能!您收到错误的原因是因为\是一个特殊的“转义”字符。它用于定义“特殊”的不可打印字符,例如换行符\n。这就是为什么反斜杠本身\需要转义,如下所示:

strchr("asdfgh\\hj",'\\')
于 2014-02-06T19:37:05.323 回答
1

C标准说,C11 6.4.4.4:

双引号"和问号?可以分别由它们本身或转义序列\"and表示\?,但单引号'和反斜杠\ 应分别由转义序列\'and表示\\

所以使用

strchr("asdfgh\\hj",'\\')  

反而。

于 2014-02-06T19:39:12.563 回答
1

在 C 中,反斜杠用于硬类型字符,例如\n. 所以你需要为\\自己写\

char *backslash = strch("some text containing \\ ...", '\\');

请注意,在您提供的字符串中\也需要写入,\\否则将被视为\h没有意义。

于 2014-02-06T19:39:57.977 回答
1

尝试这个:

strchr("asdfgh\\hj",'\\')
于 2014-02-06T19:36:51.183 回答