字符数组与字符串

来源:互联网 发布:医学英语翻译软件 编辑:程序博客网 时间:2024/05/16 09:33

字符数组的定义:用来存放字符数据的数组是字符数组。
C语言用字符数组存放字符串,字符数组中的元素依次存放字符数组中的字符。
定义格式为:char a[10];

敲黑板划重点!!!——字符数组在计算机中的存储

char a[10]="ABCDEFGHI";
注意ABCDEFGHI字符串的长度是9,不信数一数!

在计算机中的存储形式是:
[A][B][C][D][E][F][G][H][I][\0]
c[0]到c[8]存储了字符串的元素,
在c[9]的位置存储了‘\0’,它是字符串的结束符

因此字符串实际占有单元的数量=字符串长度+1,比如A-I共九个字符,字符串的长度为9,意味着如果你输出strlen(a),其结果为9,

字符串实际占有单元的数量为10,故在定义时需要考虑元素个数要比字符串实际长度多1。如char[10],表示我定义的这个数组有10个元素,可以存放长度小于等于9的字符串!

将字符串存储到字符数组中,字符串和第一个’\0’构成有效字符串,普通数组一般用下标控制循环,而字符串(字符数组)使用结束符’\0’来控制循环。

又一个重点——字符串处理函数!!!

C函数库中提供的用来处理字符串的函数:
1.gets输入字符串:输入一个字符串到字符数组,该字符数组的起始地址为该函数值!可以输入带空格的字符串,scanf加%s这种形式是不可以输入带空格的字符串的!
2.puts输出字符串:将一个字符串输出并换行!其作用与printf("%s\n",str)相同。

此外还有:(下面这些函数在使用时需要在程序前加#include<string.h>
strcat 字符串连接函数;
strcpy字符串复制函数(注意:str1=str2这种写法是错误的!);
strcmp字符串比较函数(注意:比较两个字符串对应位置字符的ASCII码值的大小,如果str1大于 str2返回正整数,str1小于str2返回负整数,str1=str2返回0,比较两个字符串是否相等时需要做如下判断if(strcmp(str1,str2)==0)千万不要写成if(str1==str2));
strlen字符串长度函数(测试字符数组长度,不包含’\0’);
strlwr将字符串中的大写字符转换为小写字符;
strupr将字符串中的小写字符转换为大写字符。

Last but not least——字符数组的输入输出!

1.单字符(用格式符%c或字符输入函数)

#include<stdio.h>int main(){    char a[3];    for(int i=0;i<3;i++){        scanf("%c",&a[i]);    }    for(int i=0;i<3;i++){        printf("%c",a[i]);    }    return 0;}

输入数据:dos
输出数据:dos

2.字符串整体或部分输入输出(用格式符%s,不需要采用循环方式进行操作)
说明:
(1)输入输出项必须是以字符串的地址形式出现,也可以是字符串常量:printf("%s\n","abcd");
(2)只能输入不包括空格、’\t’、’\n’的字符串,若要输入空格用gets函数;
(3)数组名前不加&符号(因为数组名是地址值常量);
(4)当使用格式符%s进行输入操作时空格、跳格、回车都是输入数据的结束标志!
(5)用%s输出字符串时,从输出项提供的地址开始输出,直到遇到字符串结束符’\0’为止。

原创粉丝点击