c语言open()覆盖写入文件
时间: 2024-10-04 11:00:23 浏览: 14
在C语言中,`open()`函数用于打开一个文件,并可以设置多种操作模式,其中包含覆盖写入(`O_TRUNC` 或 `O_CREAT | O_TRUNC`)。当你使用`open()`函数并传递`O_TRUNC`标志时,如果文件已存在,它将清空文件内容然后再开始写入;如果你同时使用`O_CREAT`和`O_TRUNC`,则只有当文件不存在时才会创建新的文件,并进行清零后再写入。
示例代码:
```c
#include <fcntl.h> // 包含对open()函数的头文件
#include <unistd.h>
int file descriptor; // 文件描述符变量
if (access("example.txt", F_OK) == -1) { // 检查文件是否存在
if (open("example.txt", O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR) == -1) {
perror("Error opening file");
exit(EXIT_FAILURE);
}
descriptor = fileno(stdout); // 将标准输出的文件描述符赋给file descriptor
// 然后你可以通过descriptor向文件写入数据
} else {
if (open("example.txt", O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR) == -1) {
perror("Error opening file");
exit(EXIT_FAILURE);
}
descriptor = fileno(stdout); // 同理,替换为对应的文件描述符
}
// 使用write()或fprintf()等函数写入数据到文件
```