首页 百科知识 字符指针指向字符串如何赋值

字符指针指向字符串如何赋值

时间:2023-10-17 百科知识 版权反馈
【摘要】:使用指针法定义指向字符数组的字符型指针,可实现对字符串的操作。程序定义了一个字符型数组str并对其赋初值"turbo c"。并把字符串"turbo c"的首地址赋予字符指针变量ps,即将指针ps指向该字符串。相减结果为两地址间的字符个数,亦即是被测字符串的长度。需要注意的问题是:printf函数中的变量名只能是数组名string而不能是指针ptr,因为string指向这个字符串的首字符而此时ptr指向字符串的末尾。

5.4.1 指向字符数组的指针

与一般数组一样,字符数组的数组名也是存放字符串的起始地址的指针常量。使用指针法定义指向字符数组的字符型指针,可实现对字符串的操作。

例5-9 用字符指针输出字符串。

程序如下:

img445

img446

程序运行结果:

  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。

程序如下:

img447

输入:

  s1=turbo_pascal

  s2=&turbo_C

输出:

  turbo_pascal&turbo_C

程序第12行的语句:*p++=*q++; 等价于以下语句:

  *p=*q;

  q++;

  p++;

例5-11 计算字符串的长度。

程序如下:

img448

程序运行结果:

  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 输入一个字符串,将这个字符串中所有的小写字母改写为大写字母后输出该字符串。

程序如下:

img449

img450

程序运行结果:

  Please input a string

输入:

  Asd-5jhijMnop..undo-disk

输出:

  ASD-5JHIJMNOP..UNDO-DISK

程序用变量string读入一个字符串,并令指针ptr指向string,然后依次检查字符串中的各字符,如果发现其中有为小写字母的,则把它转换为大写字母,最后输出经过转换后的字符串。需要注意的问题是:printf函数中的变量名只能是数组名string而不能是指针ptr,因为string指向这个字符串的首字符而此时ptr指向字符串的末尾。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈