C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C open(), write(), close(), fopen()

C中的open(), write(), close(), fopen()详解

作者:hisun9

本文主要介绍了C语言中的open(), write(), close(), fopen()等文件操作函数,open()函数用于打开文件,write()函数用于写入数据,close()函数用于关闭已打开的文件描述符

open() 函数

原型

#include <fcntl.h>
#include <unistd.h>
int open(const char *pathname, int flags, mode_t mode);

返回值

错误处理

常见的错误包括:

举一个例子

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
int main() {
    int fd = open("example.txt", O_RDWR, 0666);
    if (fd == -1) {
        perror("Error opening file");
        close(fd);
        return 1;
    }
    // 使用文件描述符 fd 进行读写操作...
    close(fd); // 关闭文件
    return 0;
}

输出如下:

img

write()函数

原型

#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);

返回值

错误处理

常见的错误包括:

举一个例子

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
int main() {
    int fd = open("example.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
    if (fd == -1) {
        perror("Error opening file");
        close(fd);
        return 1;
    }
    const char *data = "Hello, World!\n";
    ssize_t bytes_written = write(fd, data, 14);
    if (bytes_written == -1) {
        perror("Error writing to file");
        close(fd);
        return 1;
    }
    printf("Wrote %zd bytes to file.\n", bytes_written);
    close(fd); // 关闭文件
    return 0;
}

输出如下:

img

close()函数

close() 函数用于关闭一个已打开的文件描述符。在 C/C++ 编程中,关闭文件描述符是一个重要的步骤,以确保资源被正确释放。

原型

#include <unistd.h>
int close(int fd);

返回值

工作原理

错误处理

常见的错误包括:

举一个例子

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
int main() {
    int fd = open("example.txt", O_WRONLY | O_CREAT, 0666);
    if (fd == -1) {
        perror("Error opening file");
        return 1;
    }
    // 执行写操作...
    if (close(fd) == -1) {
        perror("Error closing file");
        return 1;
    }
    printf("File closed successfully.\n");
    return 0;
}

输出如下:

img

fopen()函数

fopen() 是 C 标准库中的一个函数,用于打开一个文件并返回一个文件指针,以便后续进行读写操作。它通常在 <stdio.h> 头文件中声明。

原型

FILE *fopen(const char *filename, const char *mode);

返回值

举一个例子

#include <stdio.h>
int main() {
    FILE *file = fopen("example.txt", "r"); // 尝试以只读模式打开文件
    if (file == NULL) {
        perror("Error opening file"); // 打印错误信息
        fclose(file); // 关闭文件
        return 1;
    }
    // 进行文件操作...
    fclose(file); // 关闭文件
    return 0;
}

输出如下:

img

重要注意事项

fopen()和open()有什么不同

fopen() 更适合一般的文件处理需求,提供了较高的抽象层次,而 open() 则适合需要低级文件控制的情况。

语言和库

fopen()

 - 是 C 标准库中的函数,通常用于 C 和 C++ 编程。
 - 提供更高层次的文件操作接口。

open()

 - 是 POSIX 系统调用,主要用于 C 语言(也可用于C++),适用于 UNIX/Linux 系统。
 - 提供低级别的文件操作。

到此这篇关于C中的open(), write(), close(), fopen()的文章就介绍到这了,更多相关C中的open(), write(), close(), fopen()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文