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