在 C 语言中,可以通过两种方式访问一个字符串,一是使用字符数组,二是使用字符指针。
例如,利用字符型指针输出字符串“Hello World!”,具体代码如下:
#include
int main()
{
char* str = "Hello World!";
printf("%s",str);
return 0;
}
程序运行结果为:
Hello World!
程序中首先定义了字符型指针变量 str,用字符串常量“Hello World!”为其赋初值。注意,这里并不是把“Hello World!”中的所有字符存放到 str 中,只是把该字符串中第一个字符的地址赋给指针变量 str。
语句“char *str="Hello World!";”等价于下面两条语句:
char *str;
str="Hello World!";
【实例】不使用
#include
void _strcpy(char *str1, char *str2);
int main()
{
char str1[] = "you are beautiful"; /*定义字符串 1*/
char str2[] = ""; /*定义字符串 2*/
_strcpy(str1, str2); /*调用自定义函数_strcpy */
printf("复制之后的字符串为:%s\n", str2); /*输出复制之后结果*/
return 0;
}
void _strcpy(char *str1, char *str2) /*用户自定义函数,用于实现字符串复制*/
{
while(*str1 != '\0') /*将字符串 1 中的字符逐个复制到字符串 2 中*/
{
*str2 = *str1;
str1++;
str2++;
}
*str2 = '\0'; /*在字符串 2 的末尾添加结束符 '\0' */
}
程序运行结果为:
复制之后的字符串为:you are beautiful
自定义函数中,参数为两个指向字符型数据的指针变量。利用 while 循环,先将 str1 指向的内容赋给 str2 指向的元素,然后 str1 和 str2 分别加 1,指向下一个元素,直到 *str1 的值为“\0”为止。
这里有一点需要注意,就是 str1 和 str2 的值是同步变化的,若 str1 处在 str1[1] 的位置,str2 就处在 str2[1] 的位置;若 str1 处在 str1[2] 的位置,str2 就处在 str2[2] 的位置。