【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(中)

简介: 【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(中)

4. 文件的顺序读写


这些函数的意义:一般与上面fopen的打开方式是相对应的,以什么打开方式就赋予了这个pf指针什么样的权限

功能

函数名 适用于

字符输入函数

fgetc 所有输入流
字符输出函数 fputc 所有输出流

文本行输入函数

fgets 所有输入流
文本行输出函数 fputs 所有输出流

格式化输入函数

fscanf 所有输入流
格式化输出函数 fprintf 所有输出流

二进制输入

fread 文件
二进制输出 fwrite 文件


1.fputc写文件--字符输出函数

fputc('a' + i,pf);//此函数一次写一个字符,所以需要一个循环来输出26个字符

c8b0a17c41a64a0f81e495a5f5ef8fea.png

文献:

d0922dbadefc4ebb84cf357d9df3c016.png

翻译:

47044190635949888cde74f7e59399d2.png

代码实例:

//fputc 写文件
#include<stdio.h>
int main()
{
  FILE* pf = fopen("test.txt", "w");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
  //写文件
  int ch = 0;
  int i = 0;
  for (i = 0; i < 26; i++)
  {
    fputc('a' + i,pf);//此函数一次写一个字符,ascll码值+1
  }
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}


效果:

d2088b04290d459b95771414b21e13d9.png


2.fgetc(pf)读文件--字符输入函数

ch = fgetc(pf);//此函数一次读取一个字符


可以看以下执行效果:

b114fab87e134e20a7f236006d739912.png

文献:

ff91e32e930c490f987b47be1858a497.png

翻译:

9b50e04806b2441b83238c30f1280878.png

代码实例:

//fgetc - 读文件操作
#include<stdio.h>
int main()
{
  FILE* pf = fopen("test.txt", "r");
  if (pf == NULL)
  {
    perror("fopen");
    return 1; 
  }
  //读文件
  //把26个字面写到文件中
  int ch=0;//看上面的文献,所以为什么这个地方会用int接收
  //printf("%c\n", ch);
  int i = 0;
  for (i = 0; i < 26; i++)
  {
    ch = fgetc(pf);//此函数一次读取一个字符
    printf("%c ",ch);//ascll码值+1
  }
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}


代码执行:注意前提是这个文件里面有内容,否则不会输出任何东西

8bd8b13d969d4ea3a016c0f448b6c2ec.png

执行:

aeb51b1d118b4ebf92fab1ce7cd84ec7.png

为什么pf不能++

2d35170a598745c0919e421745512580.png

如果加入一行代码:pf++

541d8bdb542946c89b2af97b81be85ae.png

原因:对于文件指针进行++操作是不允许的,语法不支持


3.fputs--文本行输出函数

文献:

ec49fb42f2f144b8964624cb7a034704.png

翻译:

c8711dba0c1b41dca3f7533977700b74.png

代码实现:

//fputs 写一行数据
#include<stdio.h>
int main()
{
  FILE* pf = fopen("test.txt", "w");//这里写文件名的话默认是在这个工程底下搞的,写成绝对路径或者其它相对路径,要指定
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
  //写一行数组 hello bit
  fputs("hello bit\n", pf);
  fputs("hello world\n", pf);
  // 关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}


输出不换行:

fputs("hello bit", pf);

fputs("hello world\n", pf);

2782fe3422364d25ade50fb24c401129.png

输出换行: 上面的代码可参考

19e1f43b945b4fe5b4e3fabae1e0b0ab.png


4.fgets--文本行输入函数

文献:

7567806a530b45e6b9b91462cc20f48e.png

翻译:

858206f1e89a43b288622939b0ed5730.png

代码实例:以下注释说明了为什么打印hell

//fgets - 读一行数据
int main()
{
  FILE* pf = fopen("test.txt", "r");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
  //读
  char arr[20];
  fgets(arr,5, pf);//在.txt文件有内容的情况下,这里的参数5说明最多读4个,最后一个位置是留给'\0'的
  printf("%s\n", arr);
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}


执行:

ed99f77265c14e1c84f3668719b3804b.png

相关文章
|
编译器
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
|
XML 移动开发 JavaScript
JavaScriptDOM编程(基础&进阶)1
JavaScriptDOM编程(基础&进阶)1
57 0
|
JavaScript 前端开发
JavaScriptDOM编程(基础&进阶)2
JavaScriptDOM编程(基础&进阶)2
52 0
|
JavaScript 前端开发
JavaScriptDOM编程(基础&进阶)3
JavaScriptDOM编程(基础&进阶)3
60 0
|
编译器 Linux 数据库
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
|
5天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
10天前
|
人工智能 数据挖掘 开发者
探索Python编程:从基础到进阶
【10月更文挑战第32天】本文旨在通过浅显易懂的语言,带领读者从零开始学习Python编程。我们将一起探索Python的基础语法,了解如何编写简单的程序,并逐步深入到更复杂的编程概念。文章将通过实际的代码示例,帮助读者加深理解,并在结尾处提供练习题以巩固所学知识。无论你是编程新手还是希望提升编程技能的开发者,这篇文章都将为你的学习之旅提供宝贵的指导和启发。
|
2月前
|
存储 XML 前端开发
探索Android应用开发:从基础到进阶
【8月更文挑战第57天】在这篇文章中,我们将深入探讨Android应用开发的奥秘。无论你是新手还是有经验的开发者,本文都将为你提供有价值的见解和技巧。我们将从基本的UI设计开始,逐步介绍数据存储、网络请求等高级主题,并展示一些实用的代码示例。让我们一起踏上这段激动人心的旅程吧!
|
3月前
|
数据采集 存储 人工智能
掌握Python编程:从基础到进阶的实用指南
【8月更文挑战第17天】 本文旨在通过浅显易懂的语言和实际案例,为初学者和有一定基础的开发者提供一条清晰的Python学习路径。我们将从Python的基本语法入手,逐步深入到面向对象编程、数据科学应用及网络爬虫开发等高级主题。每个部分都配备了代码示例和实操建议,确保读者能够将理论知识转化为实际能力。无论你是编程新手,还是希望提升Python技能的开发者,这篇文章都将为你打开一扇通往高效编程世界的大门。
28 2
|
程序员
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(下)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(下)