【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串

1字符数组初始化及传递

字符数组的定义方法与前面介绍的一维数组类似.例如,

char c[10];

字符数组的初始化可以采用以下方式.
(1)对每个字符单独赋值进行初始化.例如,

c[O]='I';c[1]=' ' ;c[2]='a';c[3]='m';c[4]=' ';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';

(2)对整个数组进行初始化.例如,

char c[10]='T",'a','m';'h','a','p';'p','y}

但工作中一般不用以上两种初始化方式,因为字符数组一般用来存取字符串.通常采用的初始化方式是char c[10]=“hello”.因为C语言规定字符串的结束标志为’0’,而系统会对字符串常量自动加一个o’,为了保证处理方法一致,一般会人为地在字符数组中添加’\0’,所以字符数组存储的字符串长度必须比字符数组少1字节.例如, char c[10]最长存储9个字符,剩余的1个字符用来存储’\0’.

【例】字符数组初始化及传递

#include <stdio.h>
vold print(char c[])
(
	int  i=0;
	while(c[i])
	{
   
		printf("%c" ,c[i]);
	i++;
)
	printf("\n"");
}
//字符数组存储字符串,必须存储结束符'\O'
int main()
{
   
	char c[5]={
   h,e,T,T,o;
	char d[5]="how";
	printf("%s\n",c);//会发现打印了乱码
	printf("%s\n",d);
	print(d);
	return 0;
}

为什么会打印出乱码?

hello后面没有’\0’,打印字符串读取时未结束

为什么改成"hello"也不行

char c[5]=“hello”;正常是应该加上一个’\0’,但是因为数组长度不够.无法填上,所以改成char c[6]就可以了


2.scanf 读取字符串

int main()
{
   
	char c[10];
	char d[10l;
	scanf("%s",c);
	printf("%s\n",c);
	scanf("%s%s",c,d);
	printf("c=%s,d=%s\n",c,d);
return O;
}

scanf通过%s读取字符串,对c和d分别输入"are"和"you”(中间加一个空格) , scanf在使用%s读取字符串时,会忽略空格和回车(这一点与%d和%f类似).
输入顺序及执行结果如下.

hello
hello
are you
c=are, d=you

相关推荐

  1. C语言scanfprintf 函数的&字符用法

    2024-01-22 16:04:01       29 阅读
  2. C语言如何初始化字符数组

    2024-01-22 16:04:01       17 阅读
  3. 让Windows上vscode的C语言scanf函数可以读取中文字符

    2024-01-22 16:04:01       29 阅读
  4. C语言字符串字符数组有什么区别?

    2024-01-22 16:04:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 16:04:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 16:04:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 16:04:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 16:04:01       20 阅读

热门阅读

  1. Webpack5入门到原理22:提升打包构建速度

    2024-01-22 16:04:01       33 阅读
  2. 144.二叉树的前序遍历

    2024-01-22 16:04:01       28 阅读
  3. 如何在 Linux 服务器上设置定时任务?

    2024-01-22 16:04:01       34 阅读
  4. 解密神经网络:深入探究传播机制与学习过程

    2024-01-22 16:04:01       27 阅读
  5. leetcode-环形链表

    2024-01-22 16:04:01       36 阅读
  6. Hive之set参数大全-10

    2024-01-22 16:04:01       22 阅读
  7. MySQL——第一章 MySQL基础1

    2024-01-22 16:04:01       32 阅读
  8. 文字的力量

    2024-01-22 16:04:01       32 阅读
  9. FutureTask源码阅读

    2024-01-22 16:04:01       39 阅读
  10. ES-同词义配置

    2024-01-22 16:04:01       31 阅读
  11. 蓝桥杯求解回文数(栈求解版本)

    2024-01-22 16:04:01       39 阅读
  12. 使用sklearn严格计算AUROC和AUPRC

    2024-01-22 16:04:01       35 阅读