我有以下代码:
#include <stdio.h>
#include <unistd.h>
int main () {
int fd = open("filename.dat", O_CREAT|O_WRONLY|O_TRUNC, 0600);
int result = write(fd, "abcdefghijklmnopqrstuvxz", 100);
printf("\n\nfd = %d, result = %d, errno = %d", fd, result, errno);
close(fd);
return 0;
}
我试图了解当我尝试向文件写入比可用字节多的字节时会发生什么。所以我打电话write
并要求程序写入 100 个字节,而我的字节数要少得多。结果:一堆东西stdout
从filename.dat
. 如果不是100
我使用strlen("abcdefghijklmnopqrstuvxz")
,我会得到想要的结果。那么我的问题是:为什么程序试图写超出'\0'
我字符串上的字符?这里有一些未定义的行为吗?