上篇文章讲述了二维数组的相关知识,本文我们接着来讲字符数组,和字符数组里要使用的一些函数,本文所有代码均匹配于VS环境下。

目录

一、前情介绍

二、怎样定义字符数组

三、字符数组的初始化

四、字符串和字符串结束标志

五、字符数组的输入和输出


一、前情介绍

字符型数据是以字符的ACSII代码存储在代码单元格中的,一般占一个字节。由于ASCII代码也属于整数形式,所以C99标准中,把字符类型归纳为整形类型中的一种。

二、怎样定义字符数组

用来存放字符型数据的数组称为字符型数组,在字符数组中一个元素内存放一个字符。定义字符型数组的方法与定义数值型数组的方法类似,例如:

char arr[10];

由于字符型数组是以整数形式存放的,也可以用整形数组来存放字符型数据,缺点就是浪费空间,一个字符只占一个字节,而一个整形数据占四个字节,将字符放在整形数组中会浪费空间。

三、字符数组的初始化

对字符型数组进行初始化,最容易理解的方法就是用“初始化列表” (这里的初始化列表在之前的数组的文章中进行过介绍,这里就不多进行描述),例如:

char arr[10]={'s','d','f','e','t','p','q','z','k','r'};

如果在定义字符数组时不进行初始化,那么数组中元素的值是不可预料的。如果花括号中提供的初值个数大于数组长度,则出现语法错误;如果初值个数小于数组长度,那么初值只会赋给前面的元素,后面的元素会自动赋值为空值,即‘\0’。

如果初值个数与预期个数相同,则可以省略数组长度,与之前的一维数组二维数组类似,当然字符型数组也有一维和二维之分。

四、字符串和字符串结束标志

在C语言中,字符串是被当作字符数组来处理的,在实际工作中,人们往往关心的是字符串的有效长度,而不是字符数组的长度。例如:定义一个字符数组长度为100,而字符串的长度为60。所以为了测字符串的实际长度,C语言规定了“字符串结束标志”,即‘\0’。

        如果字符数组中有若干字符,前9个都不是空字符,而第10个是空字符,那么认为空字符之前是一个字符串,而字符串的有效字符为9个。

注意:C系统会在字符数组存储字符串常量时自动加一个‘\0’,作为字符串结束的标志,例如:“Cprogram”共九个字符,但其存放在一维数组中占10的字节,最后的‘\0’是系统自动加的。

对C语言处理字符串的方法有了了解之后,再补充一种字符数组初始化的方法,即用字符串常量来对字符数组进行初始化,例如:

char arr[]={"I am happy"};
char arr[]="I am happy";

以上两种方式均可,这里是用一个字符串作为初值,很显然这种方法直观,方便更符合人们的习惯。

五、字符数组的输入和输出

字符数组的输入输出可以有两种方法。

(1)逐个字符输入输出。用格式符“%c”输入或输出一个字符。

(2)将整个字符串输入或输出。用格式符“%s”输入或输出一整个字符串。

注意:

  1. 输出的字符串中不包括结束符“\0”。
  2. 用printf函数输出字符串时,输出项是字符数组的名字,而不是数组元素名。写成下面这样是不对的:   printf("%s",arr[0]);
  3. 如果一个字符串包括一个以上结束符“\0”,则遇到第一个就输出结束。
  4. 可以用scanf输入一个字符串,输入项应是已定义的数组名,输入的字符串应短于已定义的字符数组的长度。

5.如果利用一个scanf函数输入多个字符串,则输入时应以空格分隔,例如:

scanf("%s%s%s",str1,str2,str3);
//输入数据How are you?

6.scanf函数的输入项如果是字符数组名,不要再加地址符“&”,因为再C语言中数组名代表数组中第一个元素的地址。

这是字符数组的相关内容,下一期进行字符数组相关函数的讲解,有需要的技术门持续关注,我会一直更新。

【C语言】字符数组的定义及使用相关推荐

  1. C语言字符数组的定义与初始化

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

  2. C 语言字符数组的定义与初始化

    点击打开链接 1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p' ...

  3. C语言-字符数组的定义-字符串的输入与输出

    定义字符数组: #define STR_LEN 80 char str[STR_LEN+1];//多留一个单位 定义字符数组的时候,要保证数组的长度要比字符串的长度多一个长度,因为C语言规定:字符串都 ...

  4. C语言 | 字符数组

    C语言字符数组的定义 字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值型数组的方法类似. //例子:char character[10]; C语言字符数 ...

  5. java语言中类定义数组赋值_在Java语言中,下列对于字符数组的定义并赋值正确的是(选一项)_学小易找答案...

    [单选题]<茶花女--饮酒歌>这段音乐属于级进还是跳进的旋律? <茶花女-饮酒歌>.mp4 [简答题] [单选题]对外汉语教学中以系统讲授语言知识的一类课型,包括语音.词汇.语 ...

  6. python定义字符串数组初始化_字符数组及其定义和初始化,C语言字符数组详解...

    字符数组及其定义和初始化,C语言字符数组详解 字符串的存储方式有字符数组和字符指针,我们先来看看字符数组. 因为字符串是由多个字符组成的序列,所以要想存储一个字符串,可以先把它拆成一个个字符,然后分别 ...

  7. C语言中二维字符数组的定义和初始化

    继续将一些学习记录写下来,与大家分享.本篇日志关于二维字符数组的定义和初始化.我相信这篇文章属于菜鸟级的,高手请直接无视. 一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用一些字符串来 ...

  8. C语言字符数组与字符串的使用及加结束符‘\0‘的问题

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

  9. strcmp可以比较数组么_6.3 C语言字符数组

    01字符数组的定义 1.用来存放字符数据的数组是字符数组.字符数组中的一个元素存放一个字符. 2.定义字符数组的方法和定义数值型数组的方法类似. 例子: char c[10]; 02 字符数组的初始化 ...

  10. c语言向自定数组_C语言一维数组的定义和引用

    C语言一维数组的定义和引用 C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必须先进行定义.一维数组的定义方式为: 类型 ...

最新文章

  1. C# 将List中的数据导入csv文件中
  2. c语言声明第一个学生的成绩,C语言课程设计报告--学生成绩管理系统
  3. 马斯克惹麻烦?特斯拉股票一夜暴跌12%,千亿市值蒸发
  4. 基于centos7进行yum安装lnmp linux+nginx+php7.1+mysql5.7
  5. java面试题之什么是ThreadLocal?底层如何实现的?
  6. 8张图学习大型网站技术架构(转)
  7. java 线程面试题_8道Java多线程面试题,看过后你不会后悔!
  8. Java文件上传同时携带参数
  9. 2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
  10. SaaS企业如何构建与自身增长目标相匹配的市场力?
  11. luoguP4568 [JLOI2011]飞行路线
  12. 7000词汇这么背我比较可以接受,连续看20天足以
  13. 山东畜牧兽医职业学院计算机考试,山东畜牧兽医职业学院计算机自编word15套试题11Word模拟试题(1-15).doc...
  14. git拉取指定分支上面的代码 提交本地分支到远程
  15. WebView监听网页加载成功与失败
  16. 设置 html 最大长度,在CSS中设置最大字符长度
  17. 代码要写成别人看不懂的样子(二十六)
  18. android 网络错误115,115(com.ylmf.androidclient) - 28.5.1 - 应用 - 酷安
  19. 狮子座适合计算机网络吗,适合狮子座的网名
  20. 服务器维护中启动不了怎么办,服务器不能正常启动了怎么办

热门文章

  1. 一个超级好用的插件—EIDE,在VSCODE下快速创建ARM工程
  2. JS代码清除localStorage缓存
  3. 用大疆雷达DIY的3D扫描仪器
  4. 如何去掉Windows7开机那个烦人的360安全卫士提示窗口
  5. Android usb-serial-for-android驱动库 实现(读卡器rs232串口转usb)插入开发板读取数据
  6. 用c语言编写心里测试,写了个心理测试的c程序(*^__^*) 嘻嘻……
  7. 最优控制问题matlab编程实例,matlab实现解决最优控制中的内点约束问题
  8. ISTQB- TA大纲
  9. 直播系统定制开发——海量用户实时消息系统架构演进实践
  10. Linux下_bak后缀文件是什么?