gpt4 book ai didi

无法使用 lseek 在文件末尾添加空格

转载 作者:行者123 更新时间:2023-11-30 20:56:36 26 4
gpt4 key购买 nike

我正在尝试将一些文本附加到已打开的文件中。我想在文件末尾附加 pid 号。例如:Lorem ipsum dolor sit amet orci aliquam. 14872 。我的代码工作正常,只是我无法让我的程序打印文件的最后一个字符和 pid 的第一个数字之间的空格。我尝试使用 lseek()通过添加1作为从文件末尾的偏移量,正如我之前所说,失败得很惨。我不明白出了什么问题,因为显然我得到了所有预期的结果:

Buffer size: 5.
Buffer content: 14872.
Current position: 41.

然后输出:

Lorem ipsum dolor sit amet orci aliquam.14872

这对我来说毫无意义。这是我的代码:

void writeintheend(const int fd, const int pid, const int base)
{
char *buffer;
int buffer_size = getcharsfromint(pid, base);
printf("Buffer size: %d.\n", buffer_size);
buffer = (char *) malloc (sizeof(char) * buffer_size);
sprintf(buffer, "%d", pid);
printf("Buffer content: %s.\n", buffer);

//It should add a space and then write the pid
lseek(fd, 1, SEEK_END);
printf("Current position: %d.\n", lseek(fd, 0, SEEK_CUR));
write(fd, buffer, buffer_size);
free(buffer);
}

最佳答案

寻找文件末尾不会用空格填充它,而是会留下空字节,直到将某些内容写入间隙为止。您需要将前导 ' ' 写入 pid 缓冲区,然后将其写入末尾(不进行超出文件末尾的查找)。

关于无法使用 lseek 在文件末尾添加空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23711771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com