
第8章 字符串处理 字符串常量-"hello” 字符常量-A §8.1 字符串的存储与引用 H E L L 10 C语言规定:在内存中存储字符串常量时,需在其末尾添加 空字符“0”(即ASCII码为0的字符)作为结束标志。 char ch='A':"A" A 10
第8章 字符串处理 字符串常量-"hello" 字符常量-'A' §8.1 字符串的存储与引用 H E L L O \0 char ch='A'; "A" A \0 C语言规定:在内存中存储字符串常量时,需在其末尾添加 空字符“\0”(即ASCII码为0的字符)作为结束标志

§81字符数组和字符串 ★字符数组 冬定义 例 char c[10],ch[3][4]; 必字符数组的初始化 ●逐个字符赋值 ●用字符串常量 用字符串常量 冬字符数组的引用 有问题≤ W 例char ch[6]={Hello”} char ch[6]=“Hello', char ch[]=“Hello', char s[20]="Good bye"; char s[20]; s="Good bye";
§8.1 字符数组和字符串 字符数组 ❖定义 ❖字符数组的初始化 ⚫逐个字符赋值 ⚫用字符串常量 ❖字符数组的引用 例 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] 例 char s[20]="Good bye"; char s[20]; s="Good bye";

在初始化字符数组时,可以不指定字符数组的长度。 char s={'G','o','o','d'; char t[]="Good"; char s[]={'G','o','o','d'}; char t[]="Good"; printf("号s\n",s); printf("号s\n",t); Good训" Good 8.1.3用字符指针引用字符串 1:字符指针初始化方式 printf("%sn",p); char *p="How are you!"; 2:字符指针赋值方式 How are you char *p; p="How are you!";
在初始化字符数组时,可以不指定字符数组的长度。 char s[]={'G','o','o','d'}; char t[]="Good"; 8.1.3用字符指针引用字符串 1:字符指针初始化方式 char *p="How are you!"; 2:字符指针赋值方式 char *p; p="How are you!"; printf("%s\n",p);

例输出一个字符串 #include <stdio.h 0 main() 1 {char c[10={T,'a,'m,','a,',b',o',y'}; 2 8 int i; 3 m for(i=0;i<10;i++) 4 printf("oc",c[i]); 5 a printf("\n"); 6 7 8 9
例 输出一个字符串 #include 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

冬字符串及其结束标志 ●无字符串变量,用字符数组处理字符串 ●字符串结束标志 例 “hello”共5个字符,在内存占6个字节 字符串长度5 h 0 \0 104101108108 111 0 内存存放字符ASCⅡ码
字符串 ❖字符串及其结束标志 ⚫无字符串变量,用字符数组处理字符串 ⚫字符串结束标志:‘\0’ 例 “hello”共5个字符,在内存占6个字节 字符串长度5 h e l l o \0 104 101 108 108 111 0 内存存放字符ASCII码

学符串的输入输出 ●逐个字符I/O:%c ●整个字符串I/O:%s 用字符数组名,不要加& 例 用%c 输入串长度<数组维数 main() 遇空格或回车结束 char str[5]; 自动加0 int i; 例 用%s &str的) main() { char str[5]; scanf(%s”,str)j r[]) 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’结束

例 main()】 { char a[5]={H,'e,1,1',o} printf%s”,aj 结果:Hello#=* 用%”输出时,遇0结 例 main()) {char a[]=“Hello, printf%s”,a); 结果:Hello
例 main( ) { char a[5]={‘H’,’e’,’l’,’l’,’o’}; printf(“%s”,a); } 例 main( ) { char a[ ]=“Hello”; printf(“%s”,a); } 结果:Hello#-=* h e l l o 0 1 2 3 4 结果:Hello 用“%s”输出时,遇‘\0’结 束

例 mainO { char a]={h,'e',I,0','o',"0' printf("%s",a), 输出:hel 数组中有多个八0'时, 遇第一个结束 米
main() { char a[]={'h','e','l','\0','l','o','\0'}; printf("%s",a); } 例 输出:hel h e l \0 l o \0 数组中有多个‘\0’时, 遇第一个结束

main() { int i; char a[5]; scanf("%s",a)月 输入字符串长度〈数组维 数 for(i=0;i<5;i++) printf("%d,"a[i]); he10 运行情况: he110 (1)若输入hel,正常 (2)若输入hell,正常 he 11 o (3) 若输入hello,用%s输出时,会出现问题
main() { int i; char a[5]; scanf("%s",a); for(i=0;i<5;i++) printf("%d,",a[i]); } 运行情况: (1)若输入 hel , 正常 (2)若输入 hell , 正常 (3)若输入 hello , 用%s 输出时,会出现问题 h e l \0 h e l l \0 h e l l o 输入字符串长度<数组维 数

83常用的字符串处理函数 包含在头文件string.h #include ◆用printf函数输出字符串 #include 格式:printf(%s”,字符串1用); main() 其中字符串引用包括字符串常量、字 char t[]="Good"; /char *p="How are you!"; 说明:字符数组必须以0’结束 char *p; p="How are you!"; printf("Ss\n","Hello"); printf("Hello\n"); printf("号s\n",t): printf("号s\n",p); ◆用scanf函数输入字符串 格式:scanf%s”,字符数组名) char a[20]; 功能:从键盘输入一以空格或回 scanf("%os",a); 并自动加\0” printf("%s\n",a); 说明:输入串长度应小于字符数组维数
❖8.3常用的字符串处理函数 包含在头文件 string.h ◆用printf函数输出字符串 格式:printf(“%s”,字符串引用); 其中字符串引用包括字符串常量、字符数组名或字符指针 说明:字符数组必须以‘\0’结束 ◆用scanf函数输入字符串 格式:scanf(“%s”,字符数组名) 功能:从键盘输入一以空格或回车结束的字符串放入字符数组中, 并自动加‘\0’ 说明:输入串长度应小于字符数组维数 char a[20]; scanf("%s",a); printf("%s\n",a);