精华内容
下载资源
问答
  • 这是我写的一个测试程序,我想测试下数组索引写成'\0'结束字符的后果。结果得了97. 我有两个疑问,第一呢。数组索引为什么可以用字符呢,不应该只能是数字吗。第二个,97代码的是阿斯卡码的a把。但是我代码里a索引...
  • C语言字符数组应用及程序C语言字符数组的应用用来存放字符量的数组称为字符数组。7.1.1字符数组的定义形式与前面介绍的数值数组相同。例如:char c[10];由于字符型和整型通用,也可以定义为int c[10]但这时每个数组...

    C语言字符数组应用及程序

    C语言字符数组的应用

    用来存放字符量的数组称为字符数组。

    7.1.1字符数组的定义

    形式与前面介绍的数值数组相同。例如:

    char c[10];

    由于字符型和整型通用,也可以定义为int c[10]但这时每个数组元素占2个字节的内存单元。

    字符数组也可以是二维或多维数组。例如:

    char c[5][10];

    即为二维字符数组。

    7.1.2字符数组的初始化

    字符数组也允许在定义时作初始化赋值。

    例如:

    char c[10]={‘c’, ‘ ’, ‘p’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’,’m’};

    赋值后各元素的值为:数组C

    c[0]的值为‘c’

    c[1]的值为‘ ’

    c[2]的值为‘p’

    c[3]的值为‘r’

    c[4]的值为‘0’

    c[5]的值为‘g’

    c[6]的值为‘r’

    c[7]的值为‘a’

    c[8]的值为‘m’

    其中c[9]未赋值,由的值为‘p’系统自动赋予0值。当对全体元素赋初值时也可以省去长度说明。例如:

    char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};

    这时C数组的长度自动定为9。

    7.1.3字符数组的引用

    【例7.8】

    main()

    {

    int i,j;

    char a[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};

    for(i=0;i<=1;i++)

    {

    for(j=0;j<=4;j++)

    printf("%c",a[i][j]);

    printf("\n");

    }

    }

    本例的二维字符数组由于在初始化时全部元素都赋以初值,因此一维下标的长度可以不加以说明。

    7.1.4字符串和字符串结束标志

    在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

    C语言允许用字符串的方式对数组作初始化赋值。例如:

    char c[]={'c', ' ','p','r','o','g','r','a','m'};

    可写为:

    char c[]={"C program"};

    或去掉{}写为:

    char c[]="C program";

    用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。上面的数组c在内存中的实际存放情况为:

    C

    p

    r

    o

    g

    r

    a

    m

    \0

    ‘\0'是由C编译系统自动加上的。由于采用了‘\0'标志,所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。

    7.1.5字符数组的输入输出

    在采用字符串方式后,字符数组的输入输出将变得简单方便。除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出输入一个字符数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。

    【例7.9】

    main()

    {

    char c[]="BASIC\ndBASE";

    printf("%s\n",c);

    }

    注意在本例的printf函数中,使用的格式字符串为“%s”,表示输出的是一个字符串。而在输出表列中给出数组名则可。不能写为:printf("%s",c[]);

    【例7.10】

    main()

    {

    char st[15];

    printf("input string:\n");

    scanf("%s",st);

    printf("%s\n",st);

    }

    本例中由于定义数组长度为15,因此输入的字符串长度必须小于15,以留出一个字节用于存放字符串结束标志`\0`。应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

    例如当输入的字符串中含有空格时,运行情况为:

    input string:

    this is a book

    输出为:

    this

    从输出结果可以看出空格以后的字符都未能输出。为了避免这种情况,可多设几个字符数组分段存放含空格的串。程序可改写如下:

    【例

    展开全文
  • 当我们输出字符串时,是否思考过,假如不知道字符数组的长度,我们应该怎么判断数组结束呢?#define _CRT_SECURE_NO_WARNINGS#include #include #include int main01(){inti;char* array[] = {"nihao","wohenhao",...

    当我们输出字符串时,是否思考过,假如不知道字符数组的长度,我们应该怎么判断数组结束呢?

    #define _CRT_SECURE_NO_WARNINGS

    #include

    #include

    #include

    int main01()

    {

    inti;

    char* array[] = {

    "nihao",

    "wohenhao",

    "nihaoma",

    "woyeshi",

    NULL

    };

    for (i=0; array[i]!=NULL; ++i)

    {

    printf("%s\n", array[i]);

    }

    printf("hello.....\n");

    system("pause");

    return 0;

    }

    int main02()

    {

    inti;

    char* array[] = {

    "hello",

    "hello2",

    "hello3",

    "nihao",

    '\0'

    };

    for (i=0; array[i]!=NULL; ++i)

    {

    printf("%s\n", array[i]);

    }

    printf("hello.....\n");

    system("pause");

    return 0;

    }

    int main03()

    {

    inti;

    char* array[] = {

    "as",

    "dd",

    "chei",

    "nihao",

    0

    };

    for (i=0; array[i]!=NULL; ++i)

    {

    printf("%s\n", array[i]);

    }

    printf("hello.....\n");

    system("pause");

    return 0;

    }

    //下面是错误的,会字符串"\0"不是转义字符,所以不能转义成0

    int main04()

    {

    inti;

    char* array[] = {

    "chenqi",

    "miqi",

    "chenqi",

    "\0"

    };

    for (i=0; array[i]!=NULL; ++i)

    {

    printf("%s\n", array[i]);

    }

    printf("hello.....\n");

    system("pause");

    return 0;

    }

    展开全文
  • c语言字符数组与字符串应用方法是什么?c语言字符数组与字符串应用方法:1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a'...

    d350201cdede7ef215281f8b80111b8f.png

    c语言字符数组与字符串应用方法是什么?

    c语言字符数组与字符串应用方法:

    1、字符数组的定义与初始化

    字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};

    即把10个字符分别赋给str[0]到str[9]10个元素

    如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' )。

    2、字符数组与字符串

    在c语言中,将字符串作为字符数组来处理。(c++中不是)

    在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'\0'代表。如果有一个字符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到第一个字符'\0'时,表示字符串结束,由它前面的字符组成字符串。

    系统对字符串常量也自动加一个'\0'作为结束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节'\0'是系统自动加上的。(通过sizeof()函数可验证)

    有了结束标志'\0'后,字符数组的长度就显得不那么重要了,在程序中往往依靠检测'\0'的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。(在实际字符串定义中,常常并不指定数组长度,如char str[ ])

    说明:'\n'代表ASCII码为0的字符,从ASCII码表中可以查到ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。

    对C语言处理字符串的方法由以上的了解后,再对字符数组初始化的方法补充一种方法——即可以用字符串常量来初始化字符数组:

    char str[ ]={"I am happy"}; 可以省略花括号,如下所示

    char str[ ]="I am happy";

    注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的char str[ ];

    str="I am happy";

    不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘'括起来的)作为初值。显然,这种方法更直观方便。(注意:数组str的长度不是10,而是11,这点请务必记住,因为字符串常量"I am happy"的最后由系统自动加上一个'\0')

    因此,上面的初始化与下面的初始化等价char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','\0'};

    而不与下面的等价char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};

    前者的长度是11,后者的长度是10.

    说明:字符数组并不要求它的最后一个字符为'\0',甚至可以不包含'\0',向下面这样写是完全合法的。char str[5]={'C','h','i','n','a'};

    可见,用两种不同方法初始化字符数组后得到的数组长度是不同的。#include

    void main(void)

    {

    char c1[]={'I',' ','a','m',' ','h','a','p','p','y'};

    char c2[]="I am happy";

    int i1=sizeof(c1);

    int i2=sizeof(c2);

    printf("%d\n",i1);

    printf("%d\n",i2);

    }

    结果:10 11

    3、字符串的表示形式

    在C语言中,可以用两种方法表示和存放字符串:

    (1)用字符数组存放一个字符串char str[ ]="I love China";

    (2)用字符指针指向一个字符串char* str="I love China";

    对于第二种表示方法,有人认为str是一个字符串变量,以为定义时把字符串常量"I love China"直接赋给该字符串变量,这是不对的。

    C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。

    两种表示方式的字符串输出都用printf("%s\n",str);

    %s表示输出一个字符串,给出字符指针变量名str(对于第一种表示方法,字符数组名即是字符数组的首地址,与第二种中的指针意义是一致的),则系统先输出它所指向的一个字符数据,然后自动使str自动加1,使之指向下一个字符...,如此,直到遇到字符串结束标识符 " \0 "。

    4、对使用字符指针变量和字符数组两种方法表示字符串的讨论

    虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈。

    4.1、字符数组由若干个元素组成,每个元素放一个字符;而字符指针变量中存放的是地址(字符串/字符数组的首地址),绝不是将字符串放到字符指针变量中(是字符串首地址)

    4.2、赋值方式:

    对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值

    char str[14];

    str="I love China"; (但在字符数组初始化时可以,即char str[14]="I love China";)

    而对字符指针变量,采用下面方法赋值:

    char* a;

    a="I love China";

    或者是 char* a="I love China"; 都可以

    4.3、对字符指针变量赋初值(初始化):

    char* a="I love China";

    等价于:

    char* a;

    a="I love China";

    而对于字符数组的初始化

    char str[14]="I love China";

    不能等价于:

    char str[14];

    str="I love China";(这种不是初始化,而是赋值,而对数组这样赋值是不对的)

    4.4、如果定义了一个字符数组,那么它有确定的内存地址;而定义一个字符指针变量时,它并未指向某个确定的字符数据,并且可以多次赋值。

    5、字符串处理函数

    5.1

    char *strcat(char *str1,const char *2 );

    char *strcat(char *strDestination,const char *strSource );

    功能:函数将字符串str2 连接到str1的末端,并返回指针str1

    注:连接前两个字符串的后面都有一个' \0 ',连接时将字符串1后面的 ' \0 ‘去掉,只在新串最后保留一个 ' \0 ‘

    5.2

    char *strcpy(char *str1,const char *2 );

    char *strcpy(char *strDestination,const char *strSource );

    功能:复制字符串strSource中的字符到字符串strDestination,包括空值结束符。返回值为指针strDestination。

    注:

    1、“字符数组1”必须写成数组名形式,“字符串2"可以是字符数组名,也可以是一个字符串常量

    2、复制时连同字符串后面的 ' \0 ' 一起复制到数组1中

    3、不能用赋值语句直接将一个字符串常量或者字符数组直接赋给一个字符数组(同普通变量数组是一样的),而只能用strcpy函数处理。

    4、可以用strcpy函数将字符串2中的前若干个字符复制到字符数组1中去。

    推荐教程:《C视频教程》

    展开全文
  • C语言字符数组的应用及程序C语言字符数组的应用及程序C语言字符数组的应用用来存放字符量的数组称为字符数组。7.1.1字符数组的定义形式与前面介绍的数值数组相同。例如:char c[10];由于字符型和整型通用,也可以...

    C语言字符数组的应用及程序C语言字符数组的应用及程序

    C语言字符数组的应用

    用来存放字符量的数组称为字符数组。

    7.1.1字符数组的定义

    形式与前面介绍的数值数组相同。例如:

    char c[10];

    由于字符型和整型通用,也可以定义为int c[10]但这时每个数组元素占2个字节的内存单元。

    字符数组也可以是二维或多维数组。例如:

    char c[5][10];

    即为二维字符数组。

    7.1.2字符数组的初始化

    字符数组也允许在定义时作初始化赋值。

    例如:

    char c[10]={‘c’, ‘ ’, ‘p’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’,’m’};

    赋值后各元素的值为:数组C

    c[0]的值为‘c’

    c[1]的值为‘ ’

    c[2]的值为‘p’

    c[3]的值为‘r’

    c[4]的值为‘0’

    c[5]的值为‘g’

    c[6]的值为‘r’

    c[7]的值为‘a’

    c[8]的值为‘m’

    其中c[9]未赋值,由的值为‘p’系统自动赋予0值。当对全体元素赋初值时也可以省去长度说明。例如:

    char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};

    这时C数组的长度自动定为9。

    7.1.3字符数组的引用

    【例7.8】

    main()

    {

    int i,j;

    char a[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};

    for(i=0;i<=1;i++)

    {

    for(j=0;j<=4;j++)

    printf("%c",a[i][j]);

    printf("\n");

    }

    }

    本例的二维字符数组由于在初始化时全部元素都赋以初值,因此一维下标的长度可以不加以说明。

    7.1.4字符串和字符串结束标志

    在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

    C语言允许用字符串的方式对数组作初始化赋值。例如:

    char c[]={'c', ' ','p','r','o','g','r','a','m'};

    可写为:

    char c[]={"C program"};

    或去掉{}写为:

    char c[]="C program";

    用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。上面的数组c在内存中的实际存放情况为:

    C

    p

    r

    o

    g

    r

    a

    m

    \0

    ‘\0'是由C编译系统自动加上的。由于采用了‘\0'标志,所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。

    7.1.5字符数组的输入输出

    在采用字符串方式后,字符数组的输入输出将变得简单方便。除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出输入一个字符数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。

    【例7.9】

    main()

    {

    char c[]="BASIC\ndBASE";

    printf("%s\n",c);

    }

    注意在本例的printf函数中,使用的格式字符串为“%s”,表示输出的是一个字符串。而在输出表列中给出数组名则可。不能写为:printf("%s",c[]);

    【例7.10】

    main()

    {

    char st[15];

    printf("input string:\n");

    scanf("%s",st);

    printf("%s\n",st);

    }

    本例中由于定义数组长度为15,因此输入的字符串长度必须小于15,以留出一个字节用于存放字符串结束标志`\0`。应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

    例如当输入的字符串中含有空格时,运行情况为:

    input string:

    this is a book

    输出为:

    this

    从输出结果可以看出空格以后的字符都未能输出。为了避免这种情况,可多设几个字符数组分段存放含空格的串。程序可改写如下:

    【例7.11】

    main()

    {

    cha

    展开全文
  • C语言字符数组结束符\0

    千次阅读 2020-03-04 16:23:35
    #include<stdio.h> int main(){ ...//错误 指定的数组长度不够时 //char a[]={'b','i','l','i','b','i','l','i'};//错误 不指定长度,每个字符用单引号时 //char a[9]={'b','i','l','i','b','...
  • C语言字符数组

    2019-12-10 16:10:17
    C语言字符数组 1.1字符数组的定义和引用 1、字符数组的定义 字符数组的定义与其他数据类型的数组定义类似,一般形式如下: char 数组标识符[常量表达式] 因为要定义的是字符数组,所以在数组标识符钱所用的类型是...
  • 1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中...
  • 1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ ‘I’,’ ‘,’a’,’m’,’ ‘,‘h’,’a’,’p’,’p’,’y’}; 即把10个字符分别赋给str[0]到...
  • C语言字符数组与字符串 C语言中将字符串当做字符数组处理。 (一)字符串的定义与初始化 char c1[] = { "hello" }; char c2[] = "hello";//{}括号可以省略 (二)字符数组的定义初始化 char c4[] = { 'h','e','l...
  • C++字符数组的输入输出字符数组的输入输出可以有两种方法:1) 逐个字符输入输出。2) 将整个字符串一次输入或输出。例如有以下程序段:char str[20];cin>>str; //用字符数组名输入字符串cout<在运行时输入一...
  • 字符数组和字符串字符数组字符串结束标志字符串长度 字符数组 定义:用来存放字符的数组称为字符数组。 char a[10];//一维字符数组 char b[5][10];//二维字符数组 char c[20]={'c',' ','p','r'};//给部分数组元素...
  • 字符数组实现最基础的写法,循环逐一判断数组中的字符是否为空字符,若遇到空字符则说明实际字符已读取完毕unsigned int MyStrlen(char str[]){unsigned int len = 0;for(int i = 0;str[i]!=" ";i++){len++;}...
  • C语言 字符数组 和 字符串 详解 用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'}; // 给部分数组元素...
  • 1. 字符数组的定义和初始化初始化字符数组的最简单方法是将每个字符分配给数组中的每个元素.char str [10] = {'I',','a','m',','h','a','p','p','y'}; <也就是说,将10个字符分配给str [0]至str [9] 10...
  • C语言 字符数组详解

    2019-01-15 22:56:00
    字符串 C语言 字符串实际上就是以null字符'\0'结尾的一维数组。'\0'是系统自动添加作为该...所以C中一般通过字符数组和字符指针来存储。 字符数组输入和输出: scanf:%c和%s两种类型。%c可以将空格还有换行...
  • c语言字符数组及使用方法

    千次阅读 多人点赞 2020-04-17 08:28:23
    c语言字符串及使用方法一、字符数组和字符串二、字符数组的输入三、字符数组的输出四、C 语言字符串处理函数1、字符串连接函数 strcat() 一、字符数组和字符串 用来存放字符的数组称为字符数组,例如: 1. char a...
  • 1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ ‘I’,’ ‘,’a’,’m’,’ ‘,‘h’,’a’,’p’,’p’,’y’}; 即把10个字符分别赋给str[0]到str...
  • c语言字符数组

    2017-11-23 21:18:24
    1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ ‘I’,’ ‘,’a’,’m’,’ ‘,‘h’,’a’,’p’,’p’,’y’}; 即把10个字符分别赋给str[0]到...
  • C语言中空格符、空字符、字符数组结束符、换行、回车的区别 标签: Cascii 2013-06-05 13:03 4650人阅读 评论(0) 收藏 举报  分类: 【C /C++】(7)  版权声明:本文为博主原创文章,未经博主允许...
  • 1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花...
  • C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该...
  • c语言字符数组与字符串的使用详解

    万次阅读 多人点赞 2018-04-13 16:53:00
    转载自 https://blog.csdn.net/smf0504/article/details/516735291、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','...
  • 字符数组就是char数组,当维度是一维是可以当做“字符串”,当维度是二维时可以当成是字符串数组,即若干字符串。字符数组的输入除了使用scanf外,还可以使用getchar或者gets;其输出除了使用printf外,还可以使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,065
精华内容 22,826
关键字:

c语言字符数组结束符

c语言 订阅