C中的转义序列是什么?换句话说,我怎么能问一个while语句来搜索“““C中的转义序列?
回答
在一个字符常量,你不需要逃避"
字符的次数;你可以简单地使用'"'
在一个字符串,你需要躲避"
字符,因为它是分隔符,你这样做是通过用一个反斜杠("\""
)前缀它
注意,您可以逃脱字符常量的"
字符(。 '\"'
);这是没有必要的
你也可以用'\ x22'代替'\“'在字符串中搜索双引号 – Zabba 2010-10-07 03:59:23
@Zabba:如果我在代码审查中看到'\ x22',我几乎肯定会考虑它[一个主要代码WTF](http://28.media.tumblr.com/tumblr_kpu8502s7I1qa3ti5o1_400.jpg)。 – 2010-10-07 04:02:34
当然 - 你应该把它写成\ 042 – 2010-10-07 04:15:37
想要查找的"\""
该字符'"'
,ASCII码为34. "In a string literal you escape it like \" this"
。
使用strchr()
从string.h
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "This is a sample string with \" another \"";
char * pch;
printf ("Looking for the '\"' character in: %s ...\n",str);
pch=strchr(str,'"');
while (pch!=NULL)
{
printf ("found at %d\n",pch-str+1);
pch=strchr(pch+1,'\"');
}
return 0;
}
你真的不需要为此使用string.h。 while(* pch ++!='''&& * pch);'将'pch'移动到双引号的第一个位置或直到字符串结尾。 – 2010-10-07 03:56:16
但是由于能够一次搜索整个单词(或整个16个字节的块,使用sse等),'strchr'可能会比大字符串快几倍。 – 2010-10-07 04:05:23
另一方面,如果找不到字符,'strchr'会丢失关于字符串长度的信息,所以如果需要它,您必须浪费'O(n)'调用'strlen'来再次找到它。另一种选择是'strcspn',但它可能不会针对单个字符集的情况进行优化。 – 2010-10-07 04:07:10
- 1. C#中的&的转义序列.net
- 2. 删除C#中的转义序列
- 3. 转义序列?在C++
- 4. java中的转义序列
- 5. STAssertEqualStrings中的转义序列
- 6. python中的转义序列
- 7. Ocaml中的转义序列
- 8. C++无法识别的转义序列
- 9. Ruby:转义转义序列?
- 10. 在Python中转义转义序列
- 11. 转义序列
- 12. 什么是C空格转义序列?
- 13. c#使用PosExplorer发送转义序列
- 14. c#等价于\ x php转义序列?
- 15. C#正则表达式转义序列
- 16. 用C风格转义序列转义二进制文件
- 17. PHP:转义序列#
- 18. XSL转义序列
- 19. ANSI转义序列
- 20. c#中列值的转义字符
- 21. 为什么printf(“%c%c”,92,110)中的“%c%c”,92,110不作为转义序列?
- 22. 无效的转义序列
- 23. Perl的\ @转义序列
- 24. 的Tomcat 7转义序列
- 25. C中的无效转义序列如何表现?
- 26. 如何把目标C中的转义序列?
- 27. 替换目标文件中的转义字符序列c
- 28. 如何从ruby中忽略C风格的转义序列?
- 29. 如何忽略Javascript/C#中的Unicode转义序列?
- 30. 是“\;”URL中分号的转义序列
为了澄清:给定一个'字符*'你想停下来,当你发现一个双引号? – 2010-10-07 03:49:45