cwrite() 函数是用于向文件描述符写入数据的 C 语言函数
#include <unistd.h>
ssize_t cwrite(int fd, const void *buf, size_t count);
要指定写入位置,您需要先使用 lseek() 函数设置文件描述符的当前位置。lseek() 函数的原型如下:
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
其中,fd 是文件描述符,offset 是要设置的位置偏移量,whence 指定了偏移量的参考点。通常有以下几种参考点:
SEEK_SET(0):从文件开头开始计算偏移量。SEEK_CUR(1):从当前位置开始计算偏移量。SEEK_END(2):从文件末尾开始计算偏移量。以下是一个示例,展示了如何使用 cwrite() 和 lseek() 向文件指定位置写入数据:
#include <stdio.h>
#include <unistd.h>
int main() {
const char *data = "Hello, World!";
size_t data_len = strlen(data);
int fd = open("test.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if (fd == -1) {
perror("open");
return 1;
}
// 将文件指针设置到文件的第 5 个字节
off_t offset = 5;
if (lseek(fd, offset, SEEK_SET) == -1) {
perror("lseek");
close(fd);
return 1;
}
// 向文件当前位置写入数据
ssize_t written = cwrite(fd, data, data_len);
if (written == -1) {
perror("cwrite");
close(fd);
return 1;
}
close(fd);
printf("Data written to file at position %ld\n", offset);
return 0;
}
在这个示例中,我们首先使用 open() 函数创建一个名为 “test.txt” 的文件(如果尚不存在),然后使用 lseek() 函数将文件指针设置到第 5 个字节。接下来,我们使用 cwrite() 函数将数据写入文件的当前位置(即第 5 个字节)。最后,我们关闭文件并输出写入成功的消息。