8.3.3 字符数组与字符串
字符数组是一种特殊的数组。定义一个字符数组以后,这个字符数组会返回一个头指针。可以根据这个头指针来访问数组中的每一个字符。而scanf()输入函数和printf()输出函数可以输入或输出一个字符串。范例8-7所示的实例是字符数组的使用方法。
【范例8-7】字符数组与指针的关系,实例代码如下所示。
实例代码8-7
- 01 #include <stdio.h>
- 02 int main()
- 03 {
- 04 char a[30]; /*定义一个字符数组。*/
- 05 char *p; /*定义一个指向字符变量的指针。*/
- 06 int i; /*定义一个计数器变量。*/
- 07 printf("please input a string:\n") ; /*提示输入。*/
- 08 scanf("%s",a) ; /*输入一个字符数组。*/
- 09 printf("result:\n") ;
- 10 printf("%s\n",a) ; /*输出一个字符数组。*/
- 11 i=0; /*循环计数器赋初值。*/
- 12 while(a[i]!=NULL) /*判断相对应的字符是不是为空。*/
- 13 {
- 14 printf("%c",a[i]) ; /*输出这个字符。*/
- 15 i++; /*计数器自加。*/
- 16 }
- 17 printf("\n") ; /*输出一个换行。*/
- 18 p=a; /*数组的头指针赋值给指针p。*/
- 19 printf("%s\n",p) ; /*输出变量p的内容。*/
- 20 while(*p!=NULL) /*判断p指向的内容是不是为NULL,进行while循环。*/
- 21 {
- 22 printf("%c",*p) ; /*输出指针p指向的一个字符。*/
- 23 p++; /*指针p指向下一个变量。*/
- 24 }
- 25 return 0;
- 26 }
【执行结果】输入下面的命令,编译这个程序。- gcc 8.7.c
输入下面的命令,运行这个程序。- ./a.out
程序输出下面的提示,要求输入一个字符串。- please input a string:
这时输入下面的字符串,然后按"Enter"键。- asdfgh
程序的运行结果如下所示。- please input a string:
- asdfgh
- result:
- asdfgh
- asdfgh
- asdfgh
【代码解析】上面的代码使用三种情况演示了如何访问数组中的元素。代码第12~16行使用数组下标访问数组,代码第19行使用字符串的方式打印字符数组中的所有元素,代码第20~24行使用指针访问数组元素。
注意:C语言中没有字符串数据类型,可以使用字符数组存储和操作字符串。