字符串的引用方式
在 C 程序中,字符串是存放在字符数组中的。想引用一个字符串,可以使用下面两种方式。
1.用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明 “%s” 输出该字符。
例:定义一个字符数组,在其中存放字符串 “I love Shiyanlou!”,输出该字符串和第 10 个字符。
创建 11-1.c 文件并输入以下代码:
#include<stdio.h>
int main(){
char string[]="I love Shiyanlou!";
printf("%s\n",string);
printf("%c\n",string[9]);
return 0;
}
输入以下命令编译并运行:
gcc -o 11-1 11-1.c
./11-1
程序运行结果如下:
程序分析:
在定义字符数组 string 时未指定长度,由于对它初始化,因此它的长度是确定的,长度应为 18,其中 17 个字节存放 “I love Shiyanlou!” 这 17 个字符(包含空格和感叹号),最后一个字节存放字符串 '\0'
,数组名 string 代表字数组首元素的地址。
2.用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量。
要求通过字符指针变量输出一个字符串。
编写源程序 11-2.c:
#include<stdio.h>
int main(){
char * string="I love Shiyanlou!";
printf("%s\n",string);
return 0;
}
程序运行结果如下:
程序分析:
对字符指针变量 string 初始化,实际上是把字符串第一个元素的地址赋给指针变量 string,使 string 指向字符串的第一个字符。 有人误认为 string 是一个字符串变量,以为在定义时把 “I love Shiyanlou!” 这几个字符赋给该字符串变量,这是不对的。在 C 语言中只有字符变量,没有字符串变量。
以下语句 printf("%s\n",string);
中 %s 是输出字符串时所用的格式,在输出项中给出字符指针变量名 string,则系统会输出 string 所指向的字符串第一个字符,然后自动使 string 加 1,使之指向下一个字符,再输出该字符...如此直到遇到字符串结束标志 '\0'
,因此再输出是能确定输出的字符到何时结束。
将字符串 a 复制为字符串 b,然后输出字符串