美文网首页
C语言-字符数组

C语言-字符数组

作者: 一叶之界 | 来源:发表于2016-12-12 17:56 被阅读0次

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

1 字符数组的定义

1. 字符数组的定义

字符数组的定义和整型数组的定义是相同的;

// 案例1:
char c[10];
// 字符数组也有二维数组;
// 案例2:
char a[3][4];

字符数组的初始化,字符数组是可以在定义的时候进行初始化的。

// 案例3:
char c[10]={'a','v','s'};
char c1[3]={'a','v','\0'};
char c2[]={"hello"};
char c3[10]="hello";
char c4[]={'a','b','c'};
char *p="hello";

2.字符数组的引用

// 案例4:
#include<stdio.h>
int main()
{
    char a[][5]={
        {'h','e','l','l','o'},
        {'w','o','r','l','d'}
    }
    for(int i=0;i<1;i++)
    {
      for(int j=0;j<5;j++)
      {
        printf("%c",a[i][j]);
      }
      printf("\0");
    }
    return 0;
}

注释:二维数组在初始化时,全部元素赋初值,故一维下标的长度可以不加说明

3. 字符串和字符串的结束标志'\0'

在C语言中字符串是没有专门的变量,因此常用一个字符数组表示字符串。字符串总是以“\0”作为字符串的结束。因此,当把一个字符串存入一个数组的时候,也把结束符“\0”存入数组,并作为此字符串的结束标志。有了“\0”标志后,就不会再用字符数组的长度来判断字符串的长度了。
“\0”在C编译系统自动加上的,由于采用了“\0”标志,所以在用字符串赋初值时,一般无须指定数组的长度,而由系统自行处理。

4. 字符数组的输入输出

// 案例5:
#include<stdio.h>
int main()
{
    char string[10];  //定义字符数组,若不初始化,必须说明其长度
    printf("input string:");
    scanf("%s",string); // 输入字符串
    printf("%s\n",string);  // 字符串的输出
    return 0;
}

注释:
1.“%s”表示,格式字符串;
2.定义一个字符串时,若没有进行初始化,则必须说明其长度;
3.字符数组名string代表字符串的首地址。

2 字符串的处理函数

C语言中提供了一些字符串的处理函数,其中包括:输入、输出、合并、修改、比较、转换、复制和搜索八类。使用用输入输出函数,在使用前应包含头文件“stdio.h”,其他的函数应用头文件“string.h”。

1.字符串的输入输出gets、puts

格式:
gets (字符数组名);
puts (字符数组名);

功能:
1.gets从标准输入设备上输入一串字符串;
2.puts把字符数组中的字符串输出到显示器上,显示该字符串。

// 案例6:输入输入hello world;
#include<stdio.h>
int main()
{
    char ch[15];
    gets(ch);   // 从键盘输入“hello world”
    puts(ch);   // 显示器显示“hello world”
    return 0;
}

注释:从上面可以看出,gets函数并不以空格作为字符串输入结束的标志;而以回车作为结束标志。

2. 求字符串的长度:strlen

格式:
strlen(字符数组);

功能:计算字符串的实际长度,不包括'\0'.

// 案例7:
#include<string.h>
int main()
{
    char ch1="hello world";
    int k=strlen(ch1);
    printf("The length of ch1 is %d\n",k);
    return 0;
}

3. 复制字符串:strcpy

格式:
strcpy (字符数组1,字符数组2);
strncpy(字符数组1,字符数组2,n);

功能:
1.strcpy把字符数组2里面的字符串拷贝到字符数组1中,包括'\0';也就是把字符数组2的字符串给字符数组1。
2.strncpy字符数组1中的前n个字符,由字符数组2代替。

// 案例8:
#include<string.h>
int main()
{
 char ch1[30]="hello world!";
 char ch2[30]="nihao!";
 strcpy(ch1,ch2);
 puts(ch1)
 strncpy(ch1,ch2,5);
 puts(ch1);
 return 0;}

4. 连接字符串:strcat

格式:
strcat(字符数组1,字符数组2)
strncat:(字符数组1,字符数组2,长度n)

功能:
1.strcat把字符数组2中的字符串链接到字符数组1的字符串后面,并删去字符数组1后面的'\0'。本函数的返回值是字符数组1的首地址。
2.strncat:拼接制定长度的字符串

// 案例9:
#include<string.h>
int main()
{
    char ch1[30]="my name is ";
    char ch2[30];
    char ch3[10]="yuan yi";
    printf("input your name:");
    stract(ch1,ch2);
    puts(ch1);
    strnact(ch1,ch3,4);
    puts(ch1);
    return 0;
}

5. 字符串的比较:strcmp

格式:
strcmp(字符数组1,字符数组2);
strncmp(字符数组1,字符数组2,n);

功能:
1.strcmp按照ASCII码顺序比较两组数组中的字符串,并返回比较结果;相等输出0。
2.strncmp比较两组数组的前n个字符,相等输出0。

// 案例10:
#include<string.h>
int main()
{
    int k;
    char ch1[20]="hello world";
    char ch2[20]="hello jack";
    k=strcmp(ch1,ch2);
    if(k==0)
    {
      printf("ch1和ch2是相同的\n");
    }
    else
    {
      printf("ch1和ch2是不相同的\n");
    }
    k=strncmp(ch1,ch2,3);
    if(k==0)
    {
      printf("ch1和ch2是相同的\n");
    }
    else
    {
      printf("ch1和ch2是不相同的\n");
    }
    return 0;
}
···
#3 字符串和指针的关系

char string[10]="hello";
char *p=string;
printf ("string=%s\n",p);

相关文章

  • C语言- 字符、字符数组

    字符数组和字符串 C语言中没有字符串这种数据类型,C语言中通过char型数组来替代字符串的功能。C语言中的字符串一...

  • Redis底层数据结构SDS

    前言 Redis是C语言开发的,C语言的字符类型是char,字符数组是char[],Redis没有直接使用C语言的...

  • 2018-05-13

    C语言:c语言中没有字符串类型,也没有字符串变量,字符串是放在字符型数组中的。 C语言数变量类型:整型、浮点型、v...

  • 2020-11-17--02--windows 数据类型

    windows系统是c语言开发的 字符数组,是c语言,重新定义的 Lstrlen-------C语言函数=====...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • C语言数组——字符数组

    C语言系列目录 C/C++学习资源(百度云盘链接)计算机二级资料(过级专用)C语言学习路线(从入门到实战)编写C语...

  • redis字符串对象

    C语言中的字符串 在C语言里面使用长度为N+1的字符数组来表示长度为N的字符串,并且字符数组的最后一个元素总是空字...

  • C语言-字符数组

    用来存放字符量的数组称为字符数组。 1 字符数组的定义 1. 字符数组的定义 字符数组的定义和整型数组的定义是相同...

  • C-字符串

    字符串 在 C 语言中,字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。C 编译器会在初始化数组...

  • redis源码2--字符串SDS

    Redis是用C语言实现的,但是并没有使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串...

网友评论

      本文标题:C语言-字符数组

      本文链接:https://www.haomeiwen.com/subject/dnmemttx.html