C语言中,给定字符数组数据溢出运行报乱码,scanf输入字符数组数据溢出正常运行,因为什么?有何区别?

在C中为什么用scanf给字符数组赋值溢出内存了运行不出现乱码,正常运行。(图1 代码, 图2 输入输出结果)给定字符数组数据溢出内存运行报乱码。(图3 代码, 图4 输入输出结果)因为什么?有何区别?代码:#include<stdio.h>#include<stdlib.h>int main( int argc, char *argv[], char *env[] ){ char array[2] = {'\0'}; printf("\nPlease input array: "); scanf("%s", array); printf("Please Output array: %s\n", array); printf("\n"); return 0;}

首先,这个不叫溢出,这个是数组越界

其次两个代码都是数组越界的,只不过第一个由于后续的定义的数组做了初始化,大片的内存被赋值为'\0',所以输出后没有看出来而已



温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜