2014-02-06 53 views
4

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

我试过strchr()函数作为strchr("asdfgh\hj",'\')但编译器抛出一个错误。

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

回答

6

我试图strchr()功能strchr("asdfgh\hj",'\')但编译器会引发错误

这才是正确的功能!你得到一个错误的原因是因为\是一个特殊的“逃跑”字符。它用于定义“特殊”非打印字符,如换行符\n。这就是为什么\需要转义反斜杠本身,就像这样:

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

Bro这个字符串是用户在运行时输入的。假设他/她输入了“asdfgh \ hj”。那我怎样才能把它改成“asdfgh \\ hj”。 @dasblinkenlight – ranaarjun

+1

@ranaarjun如果用户输入字符串,则不需要更改任何内容。只有编译器才需要斜杠。所以如果你调用'strchr(userString,'\\')'你会得到一个指向正确位置的指针。 – dasblinkenlight

+1

@ranaarjun你说编译器会抛出一个错误。如果字符串是由用户输入的,那么错误不可能与转义有关。因此,不仅是您的原始邮件欺骗,但你需要告诉我们你得到的实际错误。 – 2014-02-06 19:45:13

1

试试这个:

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

不正确:干草堆字符串也需要逃脱。 –

+0

@DavidGiven糟糕错字。修正了,谢谢注意:) – Agis

1

C标准说,C11 6.4.4.4:

双引号"和问号?表示的是可以由本人或分别由 转义序列\"\?分别表示,但单引号'和反斜线\ 应分别由转义序列\'\\

所以使用

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

代替。

+2

字符串中的反斜杠将被视为'\ h'(我没有投票)。 – rullof

+0

@rullof;哎呀!谢谢。 +1为:) – haccks

1

在C中,反斜杠用于硬键入的字符,如\n。所以,你需要写\\\本身:

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

注意,在字符串中您所提供的\还需要writen \\否则将被视为\h这是没有意义的。

相关问题