【发布时间】:2013-11-20 08:55:43
【问题描述】:
所以我正在尝试从大学的 sn-p 学习 C 文件 IO 操作。我的问题是 SEEK_END 无法正常工作,因为我期望它可以正常工作。
让我们为您提供更多详细信息:
输入.txt:
abcd-abcd-abcd
代码:
int fd, fdr, l1, l2, wb1, wb2;
char buf[25];
fd = open("input.txt", O_WRONLY);
fdr = open("input.txt", O_RDONLY);
l1 = lseek(fd, -3, SEEK_END);
wb1 = write(fd, "xy", 2);
l2 = lseek(fd, 4, SEEK_SET);
write(fd, "12", 2);
lseek(fdr, 0, SEEK_SET);
wb2 = read(fdr, buf, 20);
write(1, buf, wb2);
我的问题是写“xy”。我希望输出是
abcd12bcd-axyd
其实是
abcd12bcd-abcd
为什么不写“xy”?
【问题讨论】:
-
按预期在此处工作 (gcc (Debian 4.4.5-8) 4.4.5),将
abcd12bcd-axyd写入控制台。 -
如果查看
input.txt的文件大小(使用shell 或任何文件浏览器),您在运行程序之前和之后会得到什么?14? -
您在哪个平台/操作系统上遇到过这种行为?