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 个字节)。最后,我们关闭文件并输出写入成功的消息。