主要原因:程序不知道输入的字符串会是什么,有多大,所以存在内存越界的情况
分析:你声明了一个数组,固定大小,输入gets()后,如果字符串太长,超过了数组的大小,缓存里多余的数据依旧会写入内存,造成了数据覆盖问题,曾经这个问题被别人拿来作为病毒攻击的原理
解决方式:改用fgets fputs 块输入输出来代替gets puts 。用法:fget(str, n, stdin) str是被写入的字符串,n是写入的数组大小,stdin输入流,固定写法。fput(str, stdout)。
主要原因:程序不知道输入的字符串会是什么,有多大,所以存在内存越界的情况
分析:你声明了一个数组,固定大小,输入gets()后,如果字符串太长,超过了数组的大小,缓存里多余的数据依旧会写入内存,造成了数据覆盖问题,曾经这个问题被别人拿来作为病毒攻击的原理
解决方式:改用fgets fputs 块输入输出来代替gets puts 。用法:fget(str, n, stdin) str是被写入的字符串,n是写入的数组大小,stdin输入流,固定写法。fput(str, stdout)。