C语言中的字符数组与字符串及输入输出

字符数组与字符串:

  1. 字符串数组是一种特殊的字符数组。当字符数组以数字0结尾(等价于'\0')时,就是一个字符串数组,反之就是字符数组。所以说,字符串数组,就是特殊的字符数组。
  2. C语言中没有字符串这种数据类型,可以使用char数组来替代。
  3. 字符数组和字符串数组都可以使用%s来输出,要注意的是%s遇到0('\0')就会结束。
  4. 字符串数组可以逐个字符初始化,也可以使用字符串初始化。

字符数组的输入输出:

1.如果输入的字符超过数组容量-1(预留一个0的位置),就会出现运行时异常。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(int argc, char *argv[])
{
	char arr[5] = {0};
	scanf("%s", arr);
	printf("%s", arr);
	system("pause");
	return 0;
}

2.如下代码内容均有注释标注。

int main(int argc, char *argv[])
{
	char arr[16] = {0};
	/*scanf与%s同时使用时,遇到键盘输入的空格、回车就会结束输入*/
	//scanf("%s", arr);
	
	/*1.遇到空格不会结束输入
	  2.但是不会检测空间是否足够,容易造成内存越界(内存污染、空间污染等描述均是相同)。
	  3.不接收回车*/
	//gets(arr);
	
	/*1.遇到空格不会结束输入
	  2.检测空间是否足够,当输入超过数组容量时,会自动舍弃超出部分,而不会报错。
	  3.可是操作文件时使用,所以接收回车。*/
	fgets(arr, sizeof(arr), stdin);
	
	//printf("%s", arr);
	//puts(arr);//输出一个字符串,自动添加换行符
	//fputs(arr, stdout);//输出一个字符串,可以指定输出文件
	
	printf("%d\n", strlen(arr));//输出字符串大小,不包含0。
	printf("%d\n", sizeof(arr));//输出数组所占字节数,与字符串大小无关。

	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Hello_MyDream/article/details/82502633