【发布时间】:2013-11-28 13:27:32
【问题描述】:
代码如下:
#define BUFSIZ 5
#include <stdio.h>
#include <sys/syscall.h>
main()
{
char buf[BUFSIZ];
int n;
n = read(0, buf, 10);
printf("%d",n);
printf("%s",buf);
return 0;
}
然后我输入abcdefg,输出为:
8abcdefg
在read(0, buf, 10);中,10大于5,即buf的大小。但这似乎不会导致错误的结果..有人对此有想法吗?谢谢!
【问题讨论】:
-
你租了一个 5 英尺深的集装箱,然后你把一个 8 英尺长的板条箱塞进了里面,把集装箱墙撞到了你身后的另一个隐藏的集装箱里。幸运的是,在您的情况下,另一个容器是空的且未使用。
标签: c linux unix operating-system system-calls