关于c语言的转义字符

新手上路,请多包涵

include<stdio.h>

main(){

char *s="\ta\018bc";
for(;*s!='\0';s++)
printf("*");
}

为什么输出6个星号,为什么不能把0看做一个字符要把01看做一个字符

阅读 1.9k
1 个回答

C 里面合法的转义字符:

\ 反斜线

? 问号

' 单引号

" 双引号

a alert

b 退格符

e ESC 符(这个不是标准,是 GNU C 的扩展)

f feed,用于跳到下一页,现在一般不用

n 换行符

r 回车符

t 横向制表符

v 纵向制表符

o, oo, ooo 一个 8 进制数代表的 ascii 字符,其中的 o 只能是 0~7

xh, xhh, xhhh, … 一个 16 进制数代表的 ascii 字符,其中的 h 只能是 0~9,a~z,A~Z

对于最后 2 个,遵循最长匹配

所以,对于给出的字串 018,匹配到了 01 表示数字 1 代表的 ascii 字符。