本帖最后由 傘が咲く 于 2014-4-22 17:00 编辑
- #include <stdio.h>
- void test1()
- {
- char s1[] = "itheima";
- char s2[3];
- gets(s2);
- printf("s2=%s\n",s2);
- printf("s1=%s\n",s1);
- }
- int main()
- {
- test1();
- return 0;
- }
- /*
- 输入 abc
- 输出 s2=abc
- s1=itheima
- 输入 abcd
- 输出 s2=abcd
- s1= ---->这里的位置被'\0'取代。
- */
复制代码
问: gets或scanf函数在读入字符串,往字符数组里存的时候会自动在尾部添加'\0',为什么我定义的字符数组长度是3,而s1内存溢出的临界值是4个字符? 求解!{:3_67:}
|