C/C++学习笔记 C读取文本文件

2024-06-01 14:04

本文主要是介绍C/C++学习笔记 C读取文本文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、简述

要读取文本文件,需要按照以下步骤操作:

  • 首先,使用该函数打开文本文件fopen()
  • 其次,使用fgets()fgetc()函数从文件中读取文本。
  • 第三,使用函数关闭文件fclose()

2、每次从文件中读取一个字符

要从文本文件中一次读取一个字符,可以使用 fgetc() 函数。

以下程序每次从 readme.txt 文件中读取一个字符,并将文件内容显示到输出中:

#include <stdio.h>int main()
{char *filename = "readme.txt";FILE *fp = fopen(filename, "r");if (fp == NULL){printf("Error: could not open file %s", filename);return 1;}// read one character at a time and// display it to the outputchar ch;while ((ch = fgetc(fp)) != EOF)putchar(ch);// close the filefclose(fp);return 0;
}

3、逐行读取文本文件

        要从文本文件中读取一行,可以使用 fgets() 函数:

char * fgets ( char *str, int num, FILE *stream );

    fgets()函数从stream读取字符并将其存储到中str

    如果出现以下情况,该fgets()函数将停止读取:

  • 已读取 num-1 个字符
  • 已到达换行符或文件结束字符。

        请注意,该fgets()函数还包括换行符str

        下面的示例显示如何使用 fgets() 函数逐行读取文本文件并将文本显示到输出:

#include <stdio.h>int main()
{char *filename = "readme.txt";FILE *fp = fopen(filename, "r");if (fp == NULL){printf("Error: could not open file %s", filename);return 1;}// reading line by line, max 256 bytesconst unsigned MAX_LENGTH = 256;char buffer[MAX_LENGTH];while (fgets(buffer, MAX_LENGTH, fp))printf("%s", buffer);// close the filefclose(fp);return 0;
}

这篇关于C/C++学习笔记 C读取文本文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021219

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

在C#中读取文件的六种主流方法详解

《在C#中读取文件的六种主流方法详解》在C#中读取文件有多种方法,不同方式适用于不同场景(小型文件、大型文件、文本文件或二进制文件),本文给大家介绍了6种主流方法以及其适用场景,需要的朋友可以参考下... 目录方法1:File.ReadAllText(读取整个文本文件)方法2:File.ReadAllLin

C++ 多态性实战之何时使用 virtual 和 override的问题解析

《C++多态性实战之何时使用virtual和override的问题解析》在面向对象编程中,多态是一个核心概念,很多开发者在遇到override编译错误时,不清楚是否需要将基类函数声明为virt... 目录C++ 多态性实战:何时使用 virtual 和 override?引言问题场景判断是否需要多态的三个关