逃避C中的角色
所以我想检查是否有人从键盘输入: \n
( '\'
然后'n'
)到字符串,所以我做的是这样的:
if ( ((str[i] == '\') && (str[i+1] == 'n')) ) { //... }
然而,这不起作用,因为它识别\
作为转义字符并且整个事情中断。
有没有更好的方法呢?
你必须通过加倍来逃避它:
if ( ((str[i] == '\\') && (str[i+1] == 'n')) ){ }
实际反斜杠的转义序列是\\
,例如
char c = getchar(); if(c == '\\') ... stuff ...
比较\像这样。 if ((str[i] == '\\') && (str[i+1] == 'n'))
因为我们必须逃避逃脱序列\。
您可以使用这样的ASCII值代替转义字符
if ((str[i] == 92) && (str[i+1] == 'n')) ;
你用另一个\
if ( str[i] == '\\' && str[i+1] == 'n');
如果用户使用键盘输入\
和n
。
然后尝试这样
if(str[i] == '\\' && str[i+1] == 'n')
因为\
由\\
表示,所以使用\\
而不是\
来检查。