【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
54 0
|
JavaScript 前端开发
JavaScriptDOM编程(基础&进阶)2
JavaScriptDOM编程(基础&进阶)2
52 0
|
JavaScript 前端开发
JavaScriptDOM编程(基础&进阶)3
JavaScriptDOM编程(基础&进阶)3
57 0
|
编译器 Linux 数据库
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
|
2天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!
|
21天前
|
存储 人工智能 数据挖掘
探索Python编程:从基础到进阶
【10月更文挑战第5天】在数字时代的浪潮中,掌握编程技能已成为一项宝贵的能力。本文旨在为初学者提供一个深入浅出的Python编程之旅,从基本概念到实际应用,逐步揭示编程之美。无论你是编程新手还是希望深化理解,跟随这篇文章的脚步,你将学会如何用Python语言构建你的第一个程序,并了解代码背后的逻辑。让我们开始吧,解锁编程的秘密,开启你的技术成长之路!
|
2月前
|
人工智能 数据挖掘 开发者
Python编程:从基础到进阶
【8月更文挑战第59天】本文将带你进入Python的世界,从基础语法到进阶技巧,让你轻松掌握Python编程。我们将通过实例讲解,让你在实际操作中提升技能。无论你是初学者还是有一定基础的开发者,都能在本文中找到适合自己的学习内容。让我们一起探索Python的魅力吧!
|
2月前
|
存储 XML 前端开发
探索Android应用开发:从基础到进阶
【8月更文挑战第57天】在这篇文章中,我们将深入探讨Android应用开发的奥秘。无论你是新手还是有经验的开发者,本文都将为你提供有价值的见解和技巧。我们将从基本的UI设计开始,逐步介绍数据存储、网络请求等高级主题,并展示一些实用的代码示例。让我们一起踏上这段激动人心的旅程吧!
|
2月前
|
数据采集 人工智能 数据挖掘
Python编程入门:从基础到实战的快速指南
【9月更文挑战第25天】本文旨在为初学者提供一个简明扼要的Python编程入门指南。通过介绍Python的基本概念、语法规则以及实际案例分析,帮助读者迅速掌握Python编程的核心技能。文章将避免使用复杂的专业术语,而是采用通俗易懂的语言和直观的例子来阐述概念,确保内容的可读性和实用性。