字符数组
char cArray[9];
char cArray[3][3]; //二维数组或多维数组
char cArray[5]={'h','e','l','l','o'}; //如果{}中的祖父初值个数大于数组长度就会出错;如果小于,会用空字符'\0'填充。
字符串
C语言通常用一个字符数组来存放一个字符串。
字符串总是以空字符'\0'来作为结束符。
如果字符数组中最后一个字符是字符串结束标识符'\0',则该字符数组是一个字符串。
char a[]={'h','e','l','l','o','\0'}; //字符数组a是一个字符串。
char a[]={"hello"};
char a[]="hello"; //常用
char c[6]="hello"; //也可以这样写,但是[]内的数字一定要大于(5+1)个。
用二维字符数组存放多个字符串
char c[2][5]={"how","are","you","hello","word"};
char c[3][10];
int i=0;
while(gets(a[i])!=NULL){ //需要按"ctrl +z"才能停止。
i++;
}
或:
for(i;i<3;i++){
gets(a[i]);
}
字符串输入:
方法一:
char s[40];
scanf("%s",s); //scanf()开始读取输入以后,会在遇到的第一个空白字符空格(blank)、制表符(tab)或者换行符(newline)处停止读取。
//一般情况下,使用%s的scanf()只会把一个单词而不是把整个语句作为字符串读入。
//C使用其他读取输入函数(例如gets())来处理一般的字符串。
方法二:
char c[40];
gets(c);
方法三:
char input[50];
while(memset(input,0,sizeof(input)),gets(input)!=NULL){
printf("%c",input);
}
字符串输出:
方法一:
char a[]="hello";
printf("%s",a);
方法二:
char a[]="hello world";
puts(a);
例子一:字符串的输入输出
#include <stdio.h>
void fun(char *i){
printf("%s\n",i); //打印出字符串"liupc"
printf("%c\n",*i); //打印出字符串的首个元素:l
printf("%c\n",i[2]); //打印出字符'u'
*i='g'; //把首个元素改为'g'
}
int main(){
char name[30];
scanf(
"%s",name); //输入字符串 "liupc 123"S
printf("%s\n",name); //只能接受到字符串 "liupc"
fun(name); //把字符串name="liupc"传给字符指针i。即:i="liupc"。所以i是字符串的首地址。
printf("%s\n",name); //如果这个时候打印的是"giupc"说明值已经改变。
return 0;
}
运行结果:
liupc 123
liupc
liupc
l
u
giupc