提示:(1)計算字串長度時關鍵是要注意辨認逸出字元;(2)一個逸出字元總是以反斜線開始,再加一個其他字元組成。所以,遇到反斜線時要特別注意!!!
1、不帶逸出字元的字串
如:“abc!x=/”,其長度為 7
2、帶逸出字元的字串
(1) 字串“abc\n”:其中的'\n'為逸出字元(分行符號),計算字串長度時只能計作一個字元,所以該字串的長度為4(而不是5)
(2) 字串“abc\n\\\'\"":其中有4個逸出字元:'\n'(分行符號)、'\\'(反斜線)、'\''(單引號)、'\"'(雙引號),所以該字串的長度為7(而不是11)。
(3) 字串“abc\0xyz”:其中有一個逸出字元'\0',它是字串結束符,所以,當用函數strlen來測試該字串的長度時,結果應該為3(而不是7)。
(4) 字串“abc\\0xy”:其中有一個逸出字元'\\'(反斜線),這樣,後面的字串“0xy”照樣計算,所以,該字串的長度為7(而不是將第二個反斜線與其後的0結合為一個逸出字元'\0',若那樣的話,第一個反斜線將無法處理,因為一個逸出字元總是由反斜線加其他字元組成的,單獨的一個反斜線不能作為任何合法的字元)。
(5) 若將字串“abc\\0xy”改為“abc\\\0xy”:則其中有二個逸出字元'\\'(反斜線)和'\0'(字串結束符),這時,當用函數strlen來測試該字串的長度時,結果應該為4(而不是7)。
(6) 若將字串“abc\\\0xy”改為“abc\\\061xy”:則其中有二個逸出字元'\\'(反斜線)和'\061'(ASCII碼值等於061的字元,也即數字字元'1'),這時,當用函數strlen來測試該字串的長度時,結果應該為7(而不是4或9)。所以,當遇到逸出字元'\0'時,還要看其後面是否還有數字,若有,則應將後面的數字(一至二位)與前面的'\0'相結合作為一個字元計入整個字串的長度。
若用printf(“abc\\\061xy”);輸出,則輸出結果為:abc\1xy