Linux | 标准IO编程

Linux | 标准IO编程


时间2024年6月8日23:03:43

1.标准IO编程

1-1.流的打开

函数fopen()

fopen 是 C 语言中用于打开文件的标准库函数。它属于 <stdio.h> 头文件,并用于创建或打开一个文件,以便进行后续的文件读写操作。

函数的原型通常如下:

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

参数说明:

  • filename:要打开或创建的文件的名称(包括路径,如果需要的话)。

  • mode:一个字符串,指定了文件的打开模式。这些模式可以是以下值之一或它们的组合(注意,并非所有组合都是有效的):

    • "r":以只读方式打开文件。文件必须存在。
    • "w":以写入方式打开文件。如果文件不存在,则创建它;如果文件存在,则其内容被截断为零长度。
    • "a":以追加模式打开文件。如果文件不存在,则创建它;如果文件存在,则写入的数据会被追加到文件的末尾。
    • "r+":以读写方式打开文件。文件必须存在。
    • "w+":以读写方式打开文件。如果文件不存在,则创建它;如果文件存在,则其内容被截断为零长度。
    • "a+":以读写方式打开文件用于追加。如果文件不存在,则创建它;如果文件存在,则写入的数据会被追加到文件的末尾。
    • "b":二进制模式(可以与上述模式组合使用,如 "rb""wb+")。在 Windows 系统上,当以文本模式打开文件时,\n 会被转换为 \r\n,而在读取时,\r\n 会被转换为 \n。在二进制模式下,这种转换不会发生。

返回值:

  • 如果文件成功打开,fopen 返回一个指向 FILE 对象的指针,该对象可用于后续的文件操作。
  • 如果文件打开失败,fopen 返回 NULL

示例:

#include <stdio.h>

int main() {
   
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
   
        printf("Failed to open file\n");
        return 1;
    }
    fprintf(file, "Hello, World!\n");
    fclose(file);
    return 0;
}

在这个示例中,我们试图以写入模式(“w”)打开一个名为 “example.txt” 的文件。如果文件打开成功,我们向其中写入 “Hello, World!\n”,然后关闭文件。如果文件打开失败,我们打印一条错误消息并返回 1。

1-2.流的关闭

函数fclose()

fclose 是 C 语言中用于关闭一个已打开的文件的标准库函数。当你使用 fopen 或其他相关函数打开一个文件后,在完成对该文件的读写操作后,应该使用 fclose 函数来关闭它。关闭文件是一个重要的步骤,因为它会释放与文件关联的所有资源,并确保所有的数据都被正确地写入到磁盘中。

函数的原型如下:

int fclose(FILE *stream);

参数说明:

  • stream:一个指向 FILE 对象的指针,该对象是由 fopen 或其他相关函数返回的。

返回值:

  • 如果文件成功关闭,fclose 返回零(0)。
  • 如果发生错误,fclose 返回非零值(通常是 EOF,它在 <stdio.h> 中定义,通常是一个负数)。

示例:

#include <stdio.h>

int main() {
   
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
   
        printf("Failed to open file\n");
        return 1;
    }
    fprintf(file, "Hello, World!\n");
    
    // 关闭文件
    if (fclose(file) != 0) {
   
        printf("Failed to close file\n");
        return 1;
    }
    
    return 0;
}

在这个示例中,我们在写入 “Hello, World!\n” 到文件后,使用 fclose 函数来关闭文件。如果关闭文件时发生错误,我们打印一条错误消息并返回 1。然而,在大多数情况下,关闭文件通常不会失败,除非发生了磁盘错误或其他严重的系统问题。

请注意,在尝试读取或写入一个已关闭的文件时,程序的行为是未定义的,并且可能会导致程序崩溃或数据损坏。因此,确保在文件不再需要时关闭它是非常重要的。

1-3.错误处理

函数perror()

perror 是 C 语言标准库中的一个函数,它主要用于处理系统调用或库函数调用失败时产生的错误。以下是关于 perror 函数的详细解释:

函数原型perror

void perror(const char *s);

参数

  • s:这是一个指向字符串的指针,用于在错误信息前添加自定义的描述信息。如果 sNULL 或空字符串,则只输出错误描述。

功能

  • perror 函数将最近的系统错误代码(存储在全局变量 errno 中)转换为人类可读的错误描述,并将这个描述输出到标准错误流(stderr)。
  • 如果提供了自定义的字符串 s,则这个字符串会被输出在错误信息之前,并后跟一个冒号和空格。

返回值

  • perror 函数没有返回值(即返回类型为 void)。

使用示例

#include <stdio.h>
#include <stdlib.h>

int main() {
   
    FILE *fp = fopen("nonexistent_file.txt", "r");
    if (fp == NULL) {
   
        perror("File opening failed"

相关推荐

  1. Linux | 标准IO编程

    2024-06-09 11:48:04       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 11:48:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 11:48:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 11:48:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 11:48:04       20 阅读

热门阅读

  1. 43.bug:mapper接口参数使用@param重命名导致的错误

    2024-06-09 11:48:04       9 阅读
  2. 如何评价GPT-4o?【模板】

    2024-06-09 11:48:04       11 阅读
  3. 新电脑必装的7款软件,缺一不可

    2024-06-09 11:48:04       9 阅读
  4. Docker无法stop或者rm指定容器

    2024-06-09 11:48:04       11 阅读
  5. 「前端+鸿蒙」鸿蒙应用开发-TS函数

    2024-06-09 11:48:04       9 阅读
  6. 轻量管理内核复杂级别的项目

    2024-06-09 11:48:04       11 阅读
  7. Float浮动

    2024-06-09 11:48:04       8 阅读
  8. Android 日志实时输出

    2024-06-09 11:48:04       7 阅读