- 论坛徽章:
- 0
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char letters[5] = {'\0'};
printf("Please input a five digits number\n");
//while(1) {
gets(letters);
printf( "output: %s\n", letters );
//}
return 0;
}
|
以上代码, 当用户输入的字符超过5个的时候,就会引起缓冲滥出,程序很大的机率出现段错误,
但是,如果把 while(1) 前面的注释去掉,也就是说,把对gets的调用放在循环里,程序运行起来好像“好好的”,没有出现段错误,这是什么原因呢?
我测试的平台是 fedora core8
gcc 4.1.2 |
|