8.1字符串的存储与引用 ★字符串的存储 冬字符串及其结束标志 ●无字符串变量,用字符数组处理字符串 ●字符串结束标志:0》 例 “hello”共5个字符,在内存占6个字节 字符串长度5 \0 104 101108 108 111 0 内存存放字符ASCⅡ码
字符串的存储 ❖字符串及其结束标志 ⚫无字符串变量,用字符数组处理字符串 ⚫字符串结束标志:‘\0’ 例 “hello”共5个字符,在内存占6个字节 字符串长度5 h e l l o \0 104 101 108 108 111 0 内存存放字符ASCII码 8.1字符串的存储与引用
字符数组和字符串 ★字符数组 例 char c[10],ch[3][4]; 》定义 》字符数组的初始化 ●逐个字符赋值 ●用字符串常量 》字符数组的引用 用字符串常量 有问题≤ 例char ch[6]={Hello'}; char ch[6]=Hello”, char ch=“Hello”, H 1 0 0 ch[0]ch[1]ch[2] ch[3] ch[4]ch[5]
字符数组和字符串 字符数组 ❖定义 ❖字符数组的初始化 ⚫逐个字符赋值 ⚫用字符串常量 ❖字符数组的引用 例 char c[10], ch[3][4]; 例 char ch[5]={‘H’,’e’,’l’,’l’,’o’}; ch[0] H e l l o 逐个字符赋值 ch[1] ch[2] ch[3] ch[4] 有问题! 例 char ch[5]={‘H’,’e’,’l’,’l’,’o’}; ch[0] H e l l o 逐个字符赋值 ch[1] ch[2] ch[3] ch[4] 例 char ch[5]={‘B’,’o’,’y’}; ch[0] B o y \0 \0 逐个字符赋值 ch[1] ch[2] ch[3] ch[4] 例 char ch[5]=“Boy”; ch[0] B o y \0 \0 用字符串常量 ch[1] ch[2] ch[3] ch[4] 例 char ch[6]={“Hello”}; char ch[6]=“Hello”; char ch[]=“Hello”; 用字符串常量 ch[0] H e l l o ch[1] ch[2] ch[3] ch[4] \0 ch[5]
二维字符数组初始化 二维字符数组初始化 Lbor diomoond51-(D1 例char fruit[][7]={“Apple”,”Orange?”, Grape”",Pear,Peach}; d d fruit[O] A p p 0 0 d fruit[1] 0 a n g c 0 d fruit[2] G r a p e 0 \0 P r 0 d fruit[3] e a 0 0 fruit[4] P a h 0 0
例 char diamond[][5]={{'.', '.','*'},{'.','*','.','*'}, {'*', '.', '.', '.' ,'*'},{'.','*', '.','*'},{'.', '.','*'}}; 二维字符数组初始化 . . * \0 \0 . * . * \0 * . . . * . * . * \0 . . * \0 \0 diamond[0] diamond[1] diamond[2] diamond[3] diamond[4] 例 char fruit[][7]={“Apple”,”Orange”, ”Grape”,”Pear”,”Peach”}; 二维字符数组初始化 fruit[0] fruit[1] fruit[2] fruit[3] fruit[4] A p p l e \0 \0 O r a n g e \0 G r a p e \0 \0 P e a r \0 \0 \0 P e a c h \0 \0
例输出一个字符串 0 mainO) {char c[l0]={"T,'a,'m,','a,'',b',o',y; 2 a int i; 3 m for(i=0;i<10;i++) 4 printf"%c",c[i]); 5 a printf("\n"); 6 7 b 8 0 9
例 输出一个字符串 main() { char c[10]={'I',' ','a','m',' ','a',' ','b','o','y'}; int i; for(i=0;i<10;i++) printf("%c",c[i]); printf("\n"); } I a m a b o y 0 1 2 3 4 5 6 7 8 9
8.2字符串的输入输出 使用标准输入输出函数 ●逐个字苻I/O:%c ●整个字符串I/O: %S 用字符数组名,不要加& 例 用%c 输入串长度<数组维数 mainO 遇空格或回车结束 { char str[5]; 自动加0 int i; 例 用%s str); main() char str[5]; scanf(%s”,str); 5tr[]) printf"%s",str); 用字符数组名 遇0结束
使用标准输入输出函数 ⚫逐个字符I/O: %c ⚫整个字符串I/O: %s 例 用%c main() { char str[5]; int i; for(i=0;i<5;i++) scanf(“%c”, &str[i]); for(i=0;i<5;i++) printf(“%c”, str[i]); } 例 用%s main() { char str[5]; scanf(“%s”, str); printf(“%s”, str); } 用字符数组名,不要加& 输入串长度<数组维数 遇空格或回车结束 自动加‘\0’ 用字符数组名, 遇‘\0’结束 8.2字符串的输入输出