当前位置:   article > 正文

c语言字符数组及使用方法_c语言字符串数组的正确写法

c语言字符串数组的正确写法

一、字符数组和字符串

用来存放字符的数组称为字符数组,例如:

 1. char a[10];  //一维字符数组 
 2. char b[5][10];  //二维字符数组 
 3. char c[20] = { 'c', '  ', 'p', 'r', 'o', 'g', 'r', 'a','m' };  // 给部分数组元素赋值
 4. char d[] = { 'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' };  //对全体元素赋值时可以省去长度 
  • 1
  • 2
  • 3

字符数组实际上是一系列字符的集合,也就是字符串(String)。在 C 语言中,没有专门的字符串变量,没有 string 类型,通常就用一个字符数组来存放一个字符串。

在 C 语言中,字符串总是以’\0’作为结尾,所以’\0’也被称为字符串结束标志,或者字符串结束符
由" "包围的字符串会自动在末尾添加’\0’。例如,"abc"看起来只包含了 3 个字符但C 语言会 在最后添加一个’\0’,但我们感受不到。
而由‘ ’赋值的字符串则不会在末尾自动加 \0,若要以%s输出,则会输出错误,应该在末尾手动添加“\0”.

二、字符数组的输入

在 C 语言中,有两个函数可以输入字符串,它们分别是:
 scanf():通过格式控制符%s 输入字符串。除了字符串,scanf() 还能输入其他类型的数据。

char str[50];
scanf(%s”,str);
  • 1
  • 2

 gets():直接输入字符串,并且只能输入字符串。

char str[50];
gets(str);
  • 1
  • 2

但是,scanf() 和 gets() 是有区别的: 
scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。 
gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空 格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。所以可以用 gets() 用来读取一整行字符串。

三、字符数组的输出

在 C 语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: 
puts():输出字符串并自动换行,该函数只能输出字符串。 

4.  char str[30]={"c,program"};
5.  puts(str);
  • 1
  • 2

printf():通过格式控制符%s 输出字符串,不能自动换行。

1 char str[30]={"c,program"};
2 printf("%s\n",str);
  • 1
  • 2

四、C 语言字符串处理函数

string.h 是一个专门用来处理字符串的头文件,它包含了很多字符串处理函数以下例举了几个常用的函数,
在使用的时候不要忘记添加头文件

#include<string.h>

    1、字符串连接函数 strcat()

    strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    char str1={"hello "};
    char str2;
    gets(str2);
    strcat(str1,str2);
    puts(str1);
    return 0;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、字符串复制函数 strcpy()

    strcpy 是 string copy 的缩写,意思是字符串复制,也即将字符串从一个地方复制到另外一个地方,

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    char str1={"hello "};
    char str2={“world”}strcpy(str1,str2);
    puts(str1);
    return 0;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    将 str2 复制到 str1 后,str1 中原来的内容就被覆盖了。

    另外,strcpy() 要求 str1 要有足够的长度,否则不能全部装入所拷贝的字符

    3、字符串比较函数 strcmp()

    strcmp 是 string compare 的缩写,意思是字符串比较
    两个字符从第一个字符开始比较,若相同进行下一个字符的比较,直到得到结果
    返回值:若str1 和 str2 相同,则返回 0;若str1 大于str2,则返回大于 0 的 值;若 str1 小于 str2,则返回小于 0 的值。

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    char str1={"hello "};
    char str2={“world”}printf("%d",strcmp(str1, str2));
    return 0;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4、字符串测长函数 strlen()

    测量字符串的长度的函数

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    char str1={"hello "};
    printf("%d",strlen(str1, str2));
    return 0;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/563121
    推荐阅读
    相关标签
      

    闽ICP备14008679号