字符数组的输入
程序运行提示变量周围的栈损坏一般是数组越界的问题。
比如今天刷题的时候由于一些基础知识有些遗忘了,于是犯了一些低级错误。后来发现是数组越界的问题。
我另外写了这样一个测试程序:
#include <iostream>
int main()
{
char a[5];
scanf("%s",a);
std::cout<<a;
}
然后我输入了5个字符,结果出现了如下提示:
如果你跟我一样对字符数组的知识有些遗忘,或许你会想:5个字符不正是数组a的最大容纳量吗?
但其实在输入字符数组时,最后一个字符系统需要设置为’\0’,因此如果数组容纳量为n,输入的字符最多为n-1个,否则就会出现数组越界的情况。
本人的理解是:栈损坏与栈溢出是两码事,因此这里就不讨论栈溢出的情况。以上只是本菜鸡刷题后的随笔,如果有问题还请大佬指正,谢谢!