C语言学习:字符数组、字符串

字符数组
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

猜你喜欢

转载自blog.csdn.net/pengchengliu/article/details/80563011