【一起来学C语言】数组(二)

【前言】

       上篇博客介绍了一维数组和二维数组,其实关于数组,还有一个很重要的角色——字符数组。在C语言中没有专门的字符串变量,那么该如何存放字符串呢?答案就是借用数组。本篇简介字符数组相关内容。

【字符数组】

        字符数组中的一个元素只存放一个字符。
1.初始化
       字符数组的初始值是字符,当初值个数和预定的数组长度相同,定义时长度可以省略。如 char s[]={'a','b','c','d'};

2.C语言中没有字符串变量,可以通过字符数组来存放。字符串常量后有一个 ‘\0’,所以见到双引号,要有一个元素来存放结束符 ‘\0’。如"abcd"其实是由5个字符组成,因为除了abcd四个字符外,还有结尾的‘\0’。只有一个""双引号就相当于‘\0’,这是一个空字符串。
  字符串给一个字符数组进行初始化有三种情况。
  方法1:char a[5]="abcd"; 在字符串有双引号的时候,可以省去花括号。
               同 char a[4]={'a','b','c','d'}; 这里的花括号不能省略,长度中不包括‘\0’,所以长度是4.
  方法2:char a[5]={"abcd"};
  方法3:char a[5]={'a','b','c','d','\0'};

=======================================================
3.字符串存储 四种方法

方法1

     借助scanf输入一个字符串,printf()输出一个字符串。
     Char a[10]   scanf("%s",a);  因为数组名本身就是地址,所以可以把地址a输入。
     %s格式输入时,遇到回车或空格就自动结束输入。如要存储多个字符串,多个%s 连续写就行,中间不能加逗号、空格。
       printf()输出时从当前地址开始直到遇见结束符 \0为止。

方法2
gets()键盘输入:读取一个字符串赋给字符数组

#include<stdio.h>
gets(字符数组)
读取一个字符串赋给字符数组,只有遇到回车才结束读取字符,所以gets可以接受空格。

puts()输出:在屏幕上输出字符数组中的字符
#include <stdio.h>
puts(字符数组或字符串常量)
注:输出将\0 转成\n也就是回车输出

方法3
借助字符串初始化进行存储。如char a[5]={"abcd"};,谨记双引号最后一位存储时是加 \0的。

方法4

 strcpy():拷贝函数

=========================================================
4.字符串函数

函数1  strcat()  连接


格式 
#include<string.h>

strcat(字符数组1,字符数组2);

功能:连接两个字符串。从第一个 '\0'开始连,第二个串 '\0'也要连入,返回数组名也就是首地址。

函数2 strcpy()  拷贝
格式 
#include<string.h>

strcpy(字符数组1,字符数组2);

功能:从第一个字符开始连,将2替换到1中,函数值为字符数组1的首地址
如 char str[10]="1234567",str2[10]="abc"; strcpy(str1,str2);
    字符数组2中是abc\0,所以复制到数组1中,因为从第一个字符开始连,所以就覆盖了1234,数组1就变成了abc\0567,c中认为有效的只是\0前的内容,所以Str1=>"abc" Str2=>"abc"

函数3 strcmp()   比较
返回数值 (0:两个字符串相等  大于0:前一个大于后一个  小于0:前一个小于后一个)
格式 
#include<string.h>
strcmp(字符数组1,字符数组2);
功能:返回值相同位置,不同字符的ASCII码的差值。\0 的ASCII码就是0。
如 strcmp("abc","abc"); -->比较的值为0
strcmp("abc","abfc");-->比较的值为-3 ,对应位置在遇到不同字符的时候就停止了,数组1中的c遇到数组2中的f,字符不同,所以停止了。c的ASCII码值减去f的ASCII码值99-102为-3.-3小于0,所以表示前一个字符串小于后一个字符串 。

函数4 strlen()
#include<string.h>
strlen(字符数组);
功能: 求出字符数组实际长度(长度不包括结束符 \0
如 char a[]="abc\018\0";
printf("%d",strlen(a));

\01 可以看做八进制,所以是abc三个字符,加上\01一个字符,8一个字符,总共5个字符。

【小结】

关于数组的相关知识介绍就到这里,下篇博客介绍C语言的函数知识。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值