字符数组的讲解

来源:互联网 发布:mac宽带连接说鉴定失败 编辑:程序博客网 时间:2024/06/05 14:41

输入一个由5个字符组成的单词,将其内容颠倒过来

#include<stdio.h>int main(){    char ch[5];    int i,j,k;    for(i=0;i<5;i++)    {        ch[i]=getchar();    }    for(i=0,j=4;i<j;i++,j--)    {        k=ch[i];        ch[i]=ch[j];        ch[j]=k;    }    for(i=0;i<5;i++)    {        printf("%c",ch[i]);    }    return 0;}

编写程序,用于合并两个已知的数组。

#include<stdio.h>int main(){    //char ch1[]={'g','o','o','d',' '};    char ch1[]={"good"};    char ch2[]={'l','u','c','k','y'};    char ch3[10];    int i;    for(i=0;i<5;i++)    {        ch3[i]=ch1[i];    }    for(i=0;i<5;i++)    {        ch3[5+i]=ch2[i];    }    for(i=0;i<10;i++)    {        printf("%c",ch3[i]);    }    printf("\n");    return 0;}
    char ch1[]={'g','o','o','d'};    char ch1[]={"good"};

这两个字符数组是不一样的,虽然输出的结果一样,但是第一个字符数组长度为4,第二个长度为5,因为长度为5的是用字符串作为初值,字符数组的长度是字符串长度加上结束符。

当字符数组中存储的字符不是以’\0’结束时,只能像普通数组那样,用格式符”%c”一个元素一个元素的处理
例如:

char ch[5];    int i;    for(i=0;i<5;i++)    {        scanf("%c",&ch[i]);    }    for(i=0;i<5;i++)    {        printf("%c",ch[i]);    }

如果字符数组中存储的字符以’\0’结束的,也可以像普通数组那样,一个元素一个元素的处理。

char ch[]="hello";    int i;    for(i=0;ch[i]!='\0';i++)    {        printf("%c",ch[i]);    }

当用字符数组处理字符串时,可以用”%s”格式字符配合,完成字符的输入输出。
输出字符串:

    char ch[]="I love china";        printf("%s",ch);

1、在使用scanf函数输入字符串时,“地址”部分应该直接写字符数组的名字,而不是取地址运算符&,在C语言中,数组名字代表该数组的起始地址。
2、在输出字符串时,输出项也为数组名,不能是数组元素。
3、利用格式符”%s”输入的字符串,以“空格”“tab”间隔多个字符,“回车”结束输入。
4、当字符数组长度大于字符串实际长度时,也只输出到’\0’结束。
5、如果字符数组中包含多个’\0’,遇到第一个’\0’时,输出结束。
例如:

    char ch[]="hello\0handsome";        printf("%s",ch);        输出结果为:hello

6、scanf函数“%s”格式输入一个字符串时,函数中输入项用数组名,并且该数组已定义,而且输入字符串的长度应该小于数组长度。
例如:

    char ch[10];        scanf("%s",ch);        数组长度为10,最多输入9个字符。