
C语言程序设计第十章课件.ppt
38页C C语言程序设计第十章课语言程序设计第十章课件件2024/9/172/37本章学习内容本章学习内容 字符串常量字符串常量 字符串处理函数字符串处理函数 字符数组和字符指针字符数组和字符指针 向函数传递字符串向函数传递字符串 从函数返回一个字符串指针从函数返回一个字符串指针 2024/9/173/3710.1字符串常量字符串常量用双引号括起的一串字符用双引号括起的一串字符是字符串常量,是字符串常量,C C语言自语言自动为其添加动为其添加′\0\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’‘\0’结尾的字符在结尾的字符在C C语言中被看做字符串语言中被看做字符串2024/9/174/3710.2字符串的存储字符串的存储 C C C C语言并没有为字符串提供任何专门的表示法,语言并没有为字符串提供任何专门的表示法,语言并没有为字符串提供任何专门的表示法,语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理完全使用字符数组和字符指针来处理完全使用字符数组和字符指针来处理完全使用字符数组和字符指针来处理 字符数组字符数组字符数组字符数组–每个元素都是字符类型的数组每个元素都是字符类型的数组每个元素都是字符类型的数组每个元素都是字符类型的数组 charchar str[80]; str[80];H o w a r e y o u H o w a r e y o u \0\0H o w a r e y o u \0H o w a r e y o u \0是字符数组,但不代表字符串是字符数组,但不代表字符串数组的最后一个元素必须是数组的最后一个元素必须是'\0'2024/9/175/37字符数组的初始化字符数组的初始化 用字符型数据对数组进行初始化用字符型数据对数组进行初始化 –charchar str[6] = {'C','h','i','n','a','\0'}; str[6] = {'C','h','i','n','a','\0'}; 用字符串常量直接对数组初始化用字符串常量直接对数组初始化 –charchar str[6] = {"China"}; str[6] = {"China"}; –charchar str[6] = "China"; str[6] = "China";2024/9/176/3710.3字符指针字符指针 C C C C语言并没有为字符串提供任何专门的表示法,完语言并没有为字符串提供任何专门的表示法,完语言并没有为字符串提供任何专门的表示法,完语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理全使用字符数组和字符指针来处理全使用字符数组和字符指针来处理全使用字符数组和字符指针来处理字符串是一串用双引号引起来的字符字符串是一串用双引号引起来的字符 H e l l o C h i n a \0 H e l l o C h i n a \0 字符数组就是每个元素都是字符型的数组字符数组就是每个元素都是字符型的数组字符指针就是指向字符类型数据的指针字符指针就是指向字符类型数据的指针"Hello China"pStr数组最后一个元素必须是数组最后一个元素必须是'\0'才表示字符串才表示字符串2024/9/177/3710.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 str[12] = {"Hello China"}; char *pStr;pStrpStr = "Hello China";strstr数组名数组名strstr是地址常量是地址常量 字符指针字符指针pStrpStr是变量是变量 2024/9/178/3710.3字符指针字符指针 定义和初始化方法不同定义和初始化方法不同定义和初始化方法不同定义和初始化方法不同 chcharar *pStr = *pStr = "Hello China""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 str[12] = {"Hello China"}; chcharar *pStr; *pStr;pStr = pStr = "Hello China""Hello China"; ;strpStr = &str[0];pStr = &str[0];2024/9/179/37按字符逐个输入按字符逐个输入/输出输出forfor (i=0; str[i]!='\0'; i++) (i=0; str[i]!='\0'; i++){ { putchar(str[i]); putchar(str[i]);} }putchar('\n');putchar('\n');charchar str[10]; str[10];10.410.4字符串的访问和输入字符串的访问和输入字符串的访问和输入字符串的访问和输入/ / / /输出输出输出输出一般不用字符串长度控制一般不用字符串长度控制2024/9/1710/37按字符串整体输入按字符串整体输入按字符串整体输入按字符串整体输入/ /输出输出输出输出scanf("%s",str); printf("%s",str);charchar str[10]; str[10];10.410.4字符串的访问和输入字符串的访问和输入字符串的访问和输入字符串的访问和输入/ / / /输出输出输出输出gets(str); puts(str);不能输入带空格不能输入带空格的字符串的字符串可以输入带空格可以输入带空格的字符串的字符串2024/9/1711/37scanf("%s",str); printf("%s",str);charchar str[10]; str[10];10.410.4字符串的访问和输入字符串的访问和输入字符串的访问和输入字符串的访问和输入/ / / /输出输出输出输出gets(str); puts(str);空格、回车或制空格、回车或制表(表(TabTab)符是输)符是输入数据的分隔符,入数据的分隔符,因而不能被读入,因而不能被读入,输入遇到这些字输入遇到这些字符时,系统认为符时,系统认为字符串输入结束字符串输入结束按字符串整体输入按字符串整体输入按字符串整体输入按字符串整体输入/ /输出输出输出输出2024/9/1712/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.110.110.110.1】】】】从键盘输入一个人名从键盘输入一个人名从键盘输入一个人名从键盘输入一个人名,,,,把它显示在把它显示在把它显示在把它显示在屏幕屏幕屏幕屏幕上上上上 2024/9/1713/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.110.110.110.1】】】】从键盘输入一个人名从键盘输入一个人名从键盘输入一个人名从键盘输入一个人名,,,,把它显示在屏幕上把它显示在屏幕上把它显示在屏幕上把它显示在屏幕上 2024/9/1714/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.210.210.210.2】】】】使用函数使用函数使用函数使用函数gets( )gets( )gets( )gets( ),,,,从键盘输入一个从键盘输入一个从键盘输入一个从键盘输入一个带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上 2024/9/1715/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.210.210.210.2】】】】使用函数使用函数使用函数使用函数gets( )gets( )gets( )gets( ),,,,从键盘输入一个从键盘输入一个从键盘输入一个从键盘输入一个带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上 不限制输入字符串的长度不限制输入字符串的长度易引起缓冲区溢出易引起缓冲区溢出,给黑客攻击以可乘之机,给黑客攻击以可乘之机2024/9/1716/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.210.210.210.2】】】】使用函数使用函数使用函数使用函数gets( )gets( )gets( )gets( ),,,,从键盘输入一个从键盘输入一个从键盘输入一个从键盘输入一个带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上带有空格的人名,然后把它显示在屏幕上 能够能够限制输入字符串的长度限制输入字符串的长度2024/9/1717/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.310.310.310.3】】】】从键盘输入一个带有空格的人名,然从键盘输入一个带有空格的人名,然从键盘输入一个带有空格的人名,然从键盘输入一个带有空格的人名,然后在显示人名的前面显示后在显示人名的前面显示后在显示人名的前面显示后在显示人名的前面显示"Hello", I said to "Hello", I said to "Hello", I said to "Hello", I said to 2024/9/1718/3710.4字符串的访问和输入字符串的访问和输入/ /输出输出【【【【例例例例10.310.310.310.3】】】】从键盘输入一个带有空格的人名,然从键盘输入一个带有空格的人名,然从键盘输入一个带有空格的人名,然从键盘输入一个带有空格的人名,然后在显示人名的前面显示后在显示人名的前面显示后在显示人名的前面显示后在显示人名的前面显示"Hello", I said to "Hello", I said to "Hello", I said to "Hello", I said to 2024/9/1719/3710.5字符串处理函数字符串处理函数 #include












