1、第10章字符串 哈尔滨工业大学计算机科学与技术学院苏小红sxh 本章学习内容 字符串常量 字符串处理函数 字符数组和字符指针 向函数传递字符串 从函数返回一个字符串指针 10 1字符串常量 10 2字符串的存储 C语言并没有为字符串提供任何专门的表示法 完全使用字符数组和字符指针来处理字符数组每个元素都是字符类型的数组charstr 80 数组的最后一个元素必须是 0 字符数组的初始化 用字符型数据对数组进行初始化charstr 6 C h i n a 0 用字符串常量直接对数组初始化charstr 6 China charstr 6 China 10 3字符指针 C语言并没有为字符串提供任何
2、专门的表示法 完全使用字符数组和字符指针来处理 字符串是一串用双引号引起来的字符 字符数组就是每个元素都是字符型的数组 字符指针就是指向字符类型数据的指针 HelloChina pStr 数组最后一个元素必须是 0 才表示字符串 10 3字符指针 定义和初始化方法不同 str HelloChina HelloChina pStr charstr 12 HelloChina char pStr pStr HelloChina str Why 数组名str是地址常量 字符指针pStr是变量 10 3字符指针 定义和初始化方法不同 char pStr HelloChina HelloChina pS
3、tr charstr 12 HelloChina char pStr pStr HelloChina str pStr 按字符逐个输入 输出 for i 0 str i 0 i putchar str i putchar n charstr 10 10 4字符串的访问和输入 输出 按字符串整体输入 输出 scanf s str printf s str charstr 10 10 4字符串的访问和输入 输出 gets str puts str scanf s str printf s str charstr 10 10 4字符串的访问和输入 输出 gets str puts str 按字符串整
4、体输入 输出 10 4字符串的访问和输入 输出 例10 1 从键盘输入一个人名把它显示在屏幕上 Why 10 4字符串的访问和输入 输出 例10 1 从键盘输入一个人名把它显示在屏幕上 10 4字符串的访问和输入 输出 例10 2 使用函数gets 从键盘输入一个带有空格的人名 然后把它显示在屏幕上 10 4字符串的访问和输入 输出 例10 2 使用函数gets 从键盘输入一个带有空格的人名 然后把它显示在屏幕上 10 4字符串的访问和输入 输出 例10 2 使用函数gets 从键盘输入一个带有空格的人名 然后把它显示在屏幕上 10 4字符串的访问和输入 输出 例10 3 从键盘输入一个带有空
5、格的人名 然后在显示人名的前面显示 Hello Isaidto 10 4字符串的访问和输入 输出 例10 3 从键盘输入一个带有空格的人名 然后在显示人名的前面显示 Hello Isaidto 10 5字符串处理函数 include strcpy 目的字符串 源字符串 stringcopy strlen 字符串 stringlength strcat 目的字符串 源字符串 stringcombination strcmp 字符串1 字符串2 stringcomparison 计算字符串长度 include strlen 字符串 stringlength charstr 10 China pri
6、ntf d strlen str 打印结果是5 6 还是10 计算字符串长度 include strlen 字符串 stringlength len strlen str for i 0 i len i putchar str i putchar n 字符串复制 include strcpy 目的字符串 源字符串 stringcopy 字符串能否用 整体复制 str2 str1 strcpy str2 str1 字符串复制 include strcpy 目的字符串 源字符串 stringcopy 字符串能否用 整体复制 str2 str1 strcpy str2 str1 字符串连接 incl
7、ude strcat 目的字符串 源字符串 stringcombination strcat str2 str1 字符串比较 include strcmp 字符串1 字符串2 stringcomparison 字符串能否用 比较大小 if str2 str1 if strcmp str2 str1 0 字符串比较 include strcmp 字符串1 字符串2 stringcomparison 字符串是如何比较大小的 comparecomputer compare computer表示strcmp str1 str2 0为真 例10 4 按奥运会参赛国国名在字典中的顺序对其入场次序进行排序
8、例10 4 按奥运会参赛国国名在字典中的顺序对其入场次序进行排序 10 5字符串处理函数 10 6向函数传递字符串 向函数传递字符串时 既可使用字符数组作函数参数 也可使用字符指针作函数参数传地址调用 例10 5 字符串拷贝 用字符数组编程 voidMyStrcpy chardstStr charsrcStr inti 0 while srcStr i 0 dstStr i srcStr i i dstStr i 0 srcStr i dstStr i H i 0 e i 1 l i 2 l i 3 o i 4 i 5 C i 6 h i 7 i i 8 n i 9 a i 10 0 srcS
9、tr i 0 voidMyStrcpy char dstStr char srcStr while srcStr 0 dstStr srcStr srcStr dstStr dstStr 0 例10 5 字符串拷贝 用字符指针编程 srcStr dstStr H e l l o C h i n a 0 srcStr 0 srcStr dstStr 例10 6 计算实际字符个数 unsignedintMyStrlen charstr inti unsignedintlen 0 for i 0 str i 0 i len return len unsignedintMyStrlen constchar pStr unsignedintlen 0 for pStr 0 pStr len return len 方法2 用字符指针实现 方法1 用字符数组实现 统计实际字符个数 不含 0 10 7从函数返回字符指针 例10 7 编程实现strcat 的功能 10 7从函数返回字符指针 例10 7 编程实现strcat 的功能 10 7从函数返回字符指针 例10 7 编程实现strcat 的功能 Questionsandanswers