第 10章 字符串处理
10.1 了解字符串
10.2 字符指针与字符串
10.3 字符串的输入和输出
10.4 多个字符串的存储和操作
10.5 用于字符串处理的库函数
10.6 常见算法介绍
10.1 了解字符串
10.1.1 字符串的应用
10.1.2 字符型一维数组与字符串
10.1.3 通过赋初值为字符型一维数组赋字符串
10.2 字符指针与字符串
10.2.1 使指针指向字符串
10.2.2 用字符数组和字符指针处理字符串的区别
10.3 字符串的输入和输出
10.3.1 逐个字符的输入输出
10.3.2 字符串整体输入输出
10.4 多个字符串的存储和操作
1,利用字符型二维数组处理多个字符串
2,通过字符型指针数组来处理多个字符串
10.5 用于字符串处理的库函数
1,计算字符串长度的函数 strlen
2,字符串复制函数 strcpy
3,字符串连接函数 strcat
4,字符串比较函数 strcmp
10.6 常见算法介绍例 10.2 编写函数 revcopy(char
*a,char *b),将指针 a所指的字符串逆序复制到指针 b所指的存储空间 。
问题分析
( 1) 为实现逆序复制,首先需要找到指针 a所指字符串的最后一个字符 。 为此,
可以定义一个工作指针 s,通过循环移动指针使 s指向 a串的结束标志 '\0',再回退一个位置,从而使 s指向了 a串的最后一个字符 。
( 2) 复制工作也要由循环来实现:赋值语句 *b= *s; 首先将 s所指的字符 ( a串的最后一个字符 ) 复制到 b所指的存储空间
( 作为 b串的第一个字符 ) ;然后将指针 s
前移;指针 b后移 。 再次执行赋值语句时就把 a串的倒数第二个字符赋给了 b串的第二个字符 。 如此循环,当指针 s已超过指针 a
的起始地址时,表明复制已完成 。
( 3) 最后还应在新生成的字符串 b的末尾添加串结束标志 。
源程序如下:
#include <stdio.h>
void revcopy(char *a,char *b)
{ char *s;
s=a;
while(*s!='\0') s++;
s– –;
while(s>=a)
{ *b= *s; s– –; b++; }
*b='\0';
}main( )
{ char s1[ ]="abcde",s2[10];
printf("字符串 s1,");
puts(s1);
revcopy(s1,s2);
printf("字符串 s2,");
puts(s2);
}
程序的运行结果如下:
字符串 s1,abcde
字符串 s2,edcba