字符数组的输入输出有两种方法:
(1)逐个字符输入输出。用格式符“%c”输入或输出一个字符。例如

int main()
{char c[6];   //定义一个字符串for (int i = 0; i < 5; i++){scanf("%c", &c[i]);  //输入字符串}for (int i = 0; i < 5; i++){printf("%c", c[i]); //输出字符串}return 0;
}

(2)将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串(string)的输入输出。例如

int main()
{//char str[]={"China"};char str[6];scanf("%s", str);printf("%s", str);return 0;
}

在内存中数组的存储情况为:

输出时遇到’\0’,就停止输出。
说明:
(1)输出的字符中不包含结束符’\0’。
(2)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
(3)如果数组长度大于字符串实际长度,也只输出到遇到’\0’结束。例如

char c[10]={"China"}; //字符串长度为5,连'\0'一共占6个字节
printf("%s",c);

只输出字符串的有效字符"China",而不是输出10个字符。这就是用字符串结束标志的好处。
(4)如果一个字符数组中包含一个以上’\0’,则遇到第一个’\0’时就结束。例如

int main()
{char str[10] = {"China\0boy"};printf("%s", str);return 0;
}


(5)可以用scanf函数输入一个字符串。scanf("%s",c);
scanf函数中的输入项c是已定义的字符数组名,输入的字符串应该短于已定义的字符数组的长度。例如
已定义char c[6];
从键盘输入 China
系统会自动在China后面加一个’\0’结束符。如果利用一个scanf函数输入多个字符串,则应该在输入时以空格分隔。例如

char str1[5],str2[5],str3[5];
scanf("%s%s%s",str1,str2,str3);

输入数据:How are you?
由于空格字符分隔,作为三个字符串输入。在输入完后,str1,str2,str3数组的状态如下:

数组中没有被赋值的元素的值自动置’\0’。若改为

char str[13];
scanf("%s",str);

如果输入How are you?
由于系统把空格符作为输入的字符串之间的分隔符,因此只将空格前的字符"How"送到str中。把"How"作为一个字符串处理,故在其后加’\0’。str的数组状态为

注意:scanf函数中的输入项如果是字符数组名,不要再加上地址符&,因为在C语言中数组名代表该数组的第一个元素的地址(或者说数组的起始地址)
以下图为例:这个图所表示的是一个字符数组,若数组占6个字节。数组名c代表地址2000。
可以用这个printf("%o",c); //八进制形式输出输出语句得到数组第一个元素的地址,也就是数组的起始地址。

(6)前面提到的输出字符串的方法:printf("%s",c);
实际上是这样执行的:按字符数组名c找到其数组第一个元素的地址,然后逐个输出其中的字符,直到遇到’\0’为止。

C语言字符数组的输入和输出相关推荐

  1. C语言二维字符数组的输入

    标题 C语言字符数组的输入输出 定义一个字符二维数组,输入行数n,与列数m #include <stdio.h> #include <math.h> int main() {i ...

  2. 关于C语言中字符数组和字符串的输出

    本文内容仅仅代表个人在学习中遇到的问题并作出的总结,如有错误的地方和别的想法可以联系一起学习讨论! 文章目录 前言 一.字符数组和字符串 二.过程分析 1.字符数组和字符串输出对比 2.字符数组和字符 ...

  3. C语言 | 字符数组

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

  4. C语言 字符数组 和 字符串 详解

    C语言 字符数组 和 字符串 详解 用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ...

  5. Problem B: C语言习题 学生成绩输入和输出

    Problem B: C语言习题 学生成绩输入和输出 Description 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据,每个学生的数据包括num(学号).name(姓名 ...

  6. C语言字符数组的输入输出处理

    字符数组就是char数组,当维度是一维是可以当做"字符串",当维度是二维时可以当成是字符串数组,即若干字符串.字符数组的输入除了使用scanf外,还可以使用getchar或者get ...

  7. C/C++ | C语言字符数组初始化,有些赋值方式千万注意

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

  8. C语言字符数组越界问题

    C语言字符数组踩坑 如果运行下面的代码会发生输出什么? #include<stdio.h> #include<string.h>/*** 输出结果* a1:wohello* a ...

  9. c语言字符数组赋值超过,C语言字符数组赋值

    C语言字符数组赋值教程 C语言字符数组赋值详解 语法 arr[index] = value; 参数 参数 描述 arr 数组名. index 需要赋值的下标索引. value 需要设置的值. 说明 给 ...

最新文章

  1. 你知道脑机接口中的“后门“攻击吗?它真的有可能在现实中实现
  2. flink入门_阿里巴巴为何选择Flink?20年大佬分11章讲解Flink从入门到实践!
  3. java统计空间占用_JVM —— Java 对象占用空间大小计算
  4. (二十二)深入浅出TCPIP之实战篇—用c++开发一个http服务器
  5. (2) MongoDB基本概念及与关系型数据库的对照
  6. java制作加载界面_Java如何制作启动界面?
  7. C语言库文件ctype.h中重要的库函数
  8. 最不靠谱CEO,一句话让公司损失上千亿元
  9. PL/SQL 包头和包体
  10. 使用html+css实现-静态开源案例-品优购
  11. 如何用Airtest脚本切换手机的输入法
  12. c#实现任务栏气泡提醒
  13. 区块链学习笔记:区块链到底能干什么
  14. TTN服务器LoRaWAN网关配置流程
  15. kafka安装(windows版)
  16. UCOS-II优先级调度算法之详解OSPrioHighRdy=(INT 8U)((y<<3)+OSUnMapTbl[OSRdyTbl[y]]);
  17. FDTD 中石墨烯材料如何设置
  18. 【笔记】概统论与数理统计第七章知识点总结
  19. STM32 移植FreeModbus详细过程
  20. c语言单元测试及答案,C语言程序设计单元测试答案

热门文章

  1. java汽车租赁行,基于jsp的汽车租赁租车行-JavaEE实现汽车租赁租车行 - java项目源码...
  2. 谷歌云oracle,DD Windows 一键脚本(包含GCP谷歌云Oracle甲骨文)
  3. Linux挂载硬盘操作步骤
  4. Linux驱动开发-编写VS1053芯片音频驱动
  5. 番剧更新表及番剧详情数据库
  6. PowerPoint2007不能输入中文的问题
  7. python popen sqlplus_Python用subprocess的Popen来调用系统命令
  8. 企业中的各种 Title / Corporate titles
  9. 杀毒软件是计算机系统的什么,电脑杀毒软件哪个好
  10. 认知智能真的来了?且看道翰天琼认知智能三大技术体系!认知智能真的来了。