资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第10章 字符串杨铭信息学院本章重点 字符串常量 字符串处理函数 字符数组和字符指针 向函数传递字符串 从函数返回一个字符串指针 2 210.1字符串常量用双引号括起的一串字符 是字符串常量,C语言自 动为其添加0结束符“How are you“How are you“H o w a r e y o u 0H o w a r e y o u 0一串以0结尾的字符在C语言中被看作字符串3 310.2字符串的存储 C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理 字符数组 每个元素都是字符类型的数组 char str80;H o w a r e y o u H o w a r e y o u 00H o w a r e y o u 0H o w a r e y o u 0是字符数组,但不代表字符串数组的最后一个元素必须是04 4字符数组的初始化 用字符型数据对数组进行初始化 char str6 = C,h,i,n,a,0; 67,72,73,78,65,0; 用字符串常量直接对数组初始化 char str = “China“; char str = “China“;5 510.3字符指针 字符指针是指向字符型数据的指针变量。字符串在内存中占用连续的存储空间H e l l o C h i n a 0 H e l l o C h i n a 0 字符串常量 str 就是存放它的存储区的首地址Char str=“Hello China“;每个字符串在内存中有唯一确定的首地址6 610.3字符指针的初始化 字符指针与字符数组在定义和初始化时方法不同字符指针与字符数组在定义和初始化时方法不同 strstr = “Hello China“;H e l l o C h i n a 0 H e l l o C h i n a 0 “Hello China“pStrpStrchar str12 = “Hello China“; char *pStr; pStrpStr = “Hello China“;strstr数组名strstr是地址常量 字符指针pStrpStr是变量 7 7字符指针的定义和初始化char *pStr = “Hello China“;H e l l o C h i n a 0 H e l l o C h i n a 0 “Hello China“pStrpStrchar str12 = “Hello China“; char *pStr; pStr = “Hello China“;str等价 pStr = 8 8按字符逐个输入/输出forfor (i=0; stri!=0; i+) (i=0; stri!=0; i+) putchar(stri); putchar(stri); putchar(n);putchar(n);charchar str10; str10;10.410.4字符串的访问和输入字符串的访问和输入/ /输出输出一般不用字符串长度控制9 9按字符串整体输入按字符串整体输入/ /输出输出scanf(“%s“,str); printf(“%s“,str);charchar str10; str10;10.410.4字符串的访问和输入字符串的访问和输入/ /输出输出gets(str); puts(str);不能输入带空格 的字符串可以输入带空格 的字符串1010scanf(“%s“,str); printf(“%s“,str);charchar str10; str10;10.410.4字符串的访问和输入字符串的访问和输入/ /输出输出gets(str); puts(str);空格、回车或制 表(Tab)符是输 入数据的分隔符 ,因而不能被读 入,输入遇到这 些字符时,系统 认为字符串输入 结束按字符串整体输入按字符串整体输入/ /输出输出1111字符串的输入输出:scanf()printf()【例10.1】从键盘输入一个人名,把它显示在屏幕上 1212字符串的输入/输出:scanf()/printf()【例10.1】从键盘输入一个人名,把它显示在屏幕上 1313字符串的输入输出:gets()【例10.2】使用函数gets(),从键盘输入一个带有 空格的人名,然后把它显示在屏幕上 1414字符串的输入/输出:gets()和指针【例10.2】使用函数gets(),从键盘输入一个带有 空格的人名,然后把它显示在屏幕上 不限制输入字符串的长度 易引起缓冲区溢出,给黑客攻击以可乘之机1515字符串的输入/输出:fgets()【例10.2】使用函数gets(),从键盘输入一个带有 空格的人名,然后把它显示在屏幕上 能够限制输入字符串的长度161610.4字符串的访问和输入/输出【例10.3】从键盘输入一个带有空格的人名,然后 在显示人名的前面显示“Hello“, I said to 171710.4字符串的访问和输入/输出【例10.3】从键盘输入一个带有空格的人名,然后 在显示人名的前面显示“Hello“, I said to 181810.5字符串处理函数 #include strcpy(目的字符串,源字符串);string copystrlen(字符串);string lengthstrcat(目的字符串,源字符串);string combinationstrcmp(字符串1,字符串2);string comparison1919计算字符串长度 #include strlen(字符串);string lengthchar str10 = “China“;char str10 = “China“; printf(“%d“,printf(“%d“, strlen(str);strlen(str); 打印结果是 5,6,还是10?C h i n a 0 0 0 0 0 C h i n a 0 0 0 0 0不包括0的实际字符的个数2020计算字符串长度 #include strlen(字符串);string lengthlen =len = strlen(str);strlen(str); forfor (i=0; istrcpy(目的字符串,源字符串);string copy字符串能否用=整体复制? str2 = str1;strcpy(str1, str2);注意复制的方向!str1必须足够大!2222字符串连接 #include strcat(目的字符串,源字符串);string combinationstrcat(str1, str2);str1必须足够大!H e l l o H e l l o 0 0 0 0 0 00 0 0 0 0 0 0 0C h i n a 0C h i n a 0H e l l o H e l l o C h i n a 0C h i n a 0 0 0 2323str1str1str2str2str1str1字符串比较 #include strcmp(字符串1,字符串2);string comparison字符串能否用,strcmp(字符串1,字符串2);string comparison当出现第一对不相等的字符时,就由 这两个字符决定所在字符串的大小, 返回其ASCII码比较的结果值compare computercompare computer 表示 strcmp(str1, str2) 0为真2525【例例10.410.4】按奥运按奥运 会参赛国国名在会参赛国国名在 字典中的顺序对字典中的顺序对 其入场次序进行其入场次序进行 排序排序2626【例例10.410.4】按奥运会参赛国国名在字典中的顺序对按奥运会参赛国国名在字典中的顺序对 其入场次序进行排序其入场次序进行排序2727282810.5字符串处理函数2929P286-287P286-28710.6向函数传递字符串 向函数传递字符串时,既可使用字符数组作 函数参数,也可使用字符指针作函数参数 函数调用方式传地址调用3030例10.5 :字符串复制用字符数组编程void MyStrcpy(char dstStr, char srcStr) int i = 0; while (srcStri != 0) dstStri = srcStri; i+; dstStri = 0; H e l l o C h i n a H e l l o C h i n a 00 srcStrisrcStridstStridstStriH Hi=0i=0e ei=1i=1l li=2i=2l li=3i=3o oi=4i=4 i=5i=5C Ci=6i=6h hi=7i=7i ii=8i=8n ni=9i=9a ai=10i=1000srcStri=
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号