逃避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') 

因为\\\表示,所以使用\\而不是\来检查。