在C语言中,可以通过字符数组存放一个字符串,也可以用字符指针指向一个字符串。
【示例】用字符数组存放一个字符串,然后输出该字符串。- #include <stdio.h>
- int main(){
- char string[] = "I love China!";
- printf("%s\n", string);
- return 0;
- }
和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址。
【示例】用字符串指针指向一个字符串。- #include <stdio.h>
- int main(){
- char *string = "I love China!";
- printf("%s\n", string);
- return 0;
- }
对指向字符变量的指针变量应赋予该字符变量的地址。如:char c, *p=&c;表示p是一个指向字符变量c的指针变量。而:char *s="C Language";则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。
上例中,首先定义string是一个字符指针变量,然后把字符串的首地址赋予string(应写出整个字符串,以便编译器把它装入一块连续的内存单元)。程序中的:char *string = "I love China!";等效于:char *string;string = "I love China!";
【示例】输出字符串中n个字符后的所有字符。- #include <stdio.h>
- int main(){
- char *ps = "This is a good tutorial!";
- int n=10;
- ps=ps+n;
- printf("%s\n", ps);
- return 0;
- }
运行结果为:
good tutorial!
在程序中对ps初始化时,把字符串首地址赋予ps,当ps= ps+10之后,ps指向字符'b',因此输出为 "good tutorial!"。
【示例】在输入的字符串中查找有无‘k’字符。- #include <stdio.h>
- int main(){
- char str[20], *ps;
- int i;
- printf("Input a string: ");
- ps = str;
- scanf("%s", ps);
- for(i=0; ps[i]!='\0'; i++){
- if(ps[i]=='k'){
- printf("There is a 'k' in the string!\n");
- break;
- }
- }
- if(ps[i]=='\0') printf("There is no 'k' in the string\n");
- return 0;
- }
运行结果:
Input a string: thank you
There is a 'k' in the string!
【示例】不使用 strcpy 函数实现字符串的复制。- #include <stdio.h>
- void cpystr(char *pss, char *pds){
- while((*pds=*pss)!='\0'){
- pds++;
- pss++;
- }
- }
- int main(){
- char *pa = "Apple, Samsung, Xiaomi, Smartisan", b[100], *pb;
- pb=b;
- cpystr(pa, pb);
- printf("string a=%s\nstring b=%s\n",pa, pb);
- return 0;
- }
运行结果:
string a=Apple, Samsung, Xiaomi, Smartisan
string b=Apple, Samsung, Xiaomi, Smartisan
|
|