5.4.1 指向字符数组的指针
与一般数组一样,字符数组的数组名也是存放字符串的起始地址的指针常量。使用指针法定义指向字符数组的字符型指针,可实现对字符串的操作。
例5-9 用字符指针输出字符串。
程序如下:
程序运行结果:
turbo c
程序中使用了标准函数putchar(),要求在程序开始必须有预处理命令:
#include 〈stdio.h〉
程序定义了一个字符型数组str并对其赋初值"turbo c"。并把字符串"turbo c"的首地址赋予字符指针变量ps,即将指针ps指向该字符串。
while循环的条件(*ps)等价于(*ps!='\0')。在while循环中指针ps做自增运算ps++,依次输出指针指向的各字符直至遇到字符串结束符'\0'。
例5-10 合并字符串s1和s2。
程序如下:
输入:
s1=turbo_pascal
s2=&turbo_C
输出:
turbo_pascal&turbo_C
程序第12行的语句:*p++=*q++; 等价于以下语句:
*p=*q;
q++;
p++;
例5-11 计算字符串的长度。
程序如下:
程序运行结果:
please input a string(1ess than 20 character):
输入字符串:
programming
输出:
The string length is 11
程序中定义s[20]为字符型数组,定义p为指向字符数组的指针;用键盘输入字符串s。赋值语句“p=s;”将字符数组s的首地址赋给指针p,即使指针p指向字符数组。
while循环的条件为字符串s未结束,若表达式(*p!='\0')为真,则进行p加l的操作,使指针p指向下一个字符。
最后用函数printf()输出被检测字符串的长度p−s。这里p−s为指针相减,p指向字符串结束符'\0'的地址,s为字符数组的首地址。相减结果为两地址间的字符个数,亦即是被测字符串的长度。
例5-12 输入一个字符串,将这个字符串中所有的小写字母改写为大写字母后输出该字符串。
程序如下:
程序运行结果:
Please input a string
输入:
Asd-5jhijMnop..undo-disk
输出:
ASD-5JHIJMNOP..UNDO-DISK
程序用变量string读入一个字符串,并令指针ptr指向string,然后依次检查字符串中的各字符,如果发现其中有为小写字母的,则把它转换为大写字母,最后输出经过转换后的字符串。需要注意的问题是:printf函数中的变量名只能是数组名string而不能是指针ptr,因为string指向这个字符串的首字符而此时ptr指向字符串的末尾。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。