开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
程式1
#include <stdio.h>
int main(int argc, char *argv[]) {
char s1[4]="XYZ";
char s2[4];
gets(s2);
printf ("s2=%s\n",s2);
printf ("s1=%s\n",s1);
return 0;
}
程式2
#include <stdio.h>
int main(int argc, char *argv[]) {
char s1[4]="XYZ";
char s2[4];
scanf("%s",s2);
printf ("s2=%s\n",s2);
printf ("s1=%s\n",s1);
return 0;
}
补充说明(Supplement):
老师先教scanf,再教gets,
教到gets时, 编译器上显示gets不安全,
老师解释: 因为gets会有容易发生内存溢位
我不懂的是
我try了上面两个程式, 输入ABCDEFG, 显示s1=EFG非XYZ, 发生溢位
为什么在gets就显示不安全呢?scanf就没有呢?