字符数组与字符串:
- 字符串数组是一种特殊的字符数组。当字符数组以数字0结尾(等价于'\0')时,就是一个字符串数组,反之就是字符数组。所以说,字符串数组,就是特殊的字符数组。
- C语言中没有字符串这种数据类型,可以使用char数组来替代。
- 字符数组和字符串数组都可以使用%s来输出,要注意的是%s遇到0('\0')就会结束。
- 字符串数组可以逐个字符初始化,也可以使用字符串初始化。
字符数组的输入输出:
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;
}