(1)用字符数组存放一个字符串
char string[]="Linux C";
printf("%s\n",string);
string是一个字符数组名,它同时也是该字符数组的首地址。
(2)用字符串指针来指向字符串
如果不想定义字符数组,就可以只用一个指向字符串的指针,叫“字符串指针”,例如:
char *p="Linux C";
printf("%s\n",p);
“Linux C”是一个字符串常量。C语言对于字符串常量的处理方法:在内存中开辟一个字符数组来存储该字符串常量,并把开辟出的字符数组的首地址赋给p。
//3种方式实现字符串的拷贝
#include <stdio.h>
int main()
{
char a[] = "Linux C Program",b[20],c[20],d[20];
int i;
//(1)数组
for(i=0;a[i]!='\0';i++)
b[i]=a[i];
b[i]='\0';
//(2)以数组首地址做基准的指针运算
for(i=0; *(a+i) != '\0'; i++)
*(c+i) = *(a+i);
*(c+i) = '\0';
//(3)用字符串指针
char *p1,*p2;
p1 = a;
p2 = d;
for(; *p1 != '\0'; p1++,p2++)
*p2 = *p1;
*p2 = '\0';
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);
printf("%s\n",d);
return 0 ;
}
运行结果:
//在函数中实现字符串拷贝
#include <stdio.h>
//用《数组》的方法实现拷贝
void copy_string1(char src[ ],char dst[ ])
{
int i;
for(i=0; src[i] != '\0';i++)
dst[i] = src[i];
dst[i] = '\0';
}
//用《指针》的方法实现拷贝
void copy_string2(char *psrc,char *pdst)
{
for(; *psrc != '\0'; psrc++,pdst++)
*pdst = *psrc;
*pdst = '\0';
}
int main()
{
char a[] = "I love C",b[20],c[20];
copy_string1(a,b);
copy_string2(a,c);
printf("%s\n%s\n%s\n",a,b,c);
return 0 ;
}
运行结果: