
第8章, 字符串处理 字符串常量-"hello" 字符常量-A §8.1 字符串的存储与引用 H E L L 10 C语言规定:在内存中存储字符串常量时,需在其末尾添加 空字符“0”(即ASCⅡ码为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]; 。字符数组的初始化 ●逐个字符赋值 ●用字符串常量 用字符串常量 字符数组的引用 :B9 有问题冬 N 例char ch[6]={Hello”} char ch6]=“Hello” char ch[l=“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 xql[4={“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星 期五”,“星期六“; char xq4={"日","一,"二","三","四","五","六"} xq[0] 星期日 输入阿拉伯数字,转化为汉字 xq[1] 星期一 125.67一壹佰贰拾伍元陆角柒分 xq[2] 星期二 xq[3] 星期三 xq[4] 星期四 xq[5] 星期五 xq[6] 星期六 char d4={“零”,“壹”,“贰”,“叁”,“肆”,“伍”,“陆”,”柒”,“捌”, “玖” char dw4={“元”,“分”,“角”,“元”,“拾”,“百”,“仟”,”万”,“拾”, “百”,“仟”,“亿
char xq[][4]={"日","一","二","三","四","五","六"}; char xq[][4]={“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星 期五”,“星期六“}; 星期日 星期一 星期二 星期三 星期四 星期五 星期六 xq[0] xq[1] xq[2] xq[3] xq[4] xq[5] xq[6] char dx[][4]={“零”,“壹”,“贰”,“叁”,“肆”,“伍”,“陆”,”柒”,“捌”, “玖”}; char dw[][4]={“元”,“分”,“角”,“元”,“拾”,“百”,“仟 ”,”万”,“拾”, “百”,“仟”,“亿”}; 输入阿拉伯数字,转化为汉字 125.67—壹佰贰拾伍元陆角柒分

在初始化字符数组时,可以不指定字符数组的长度。 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("%s\n",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”,ai 结果: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 运行情况: (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 输入字符串长度<数组维 数