【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

目录
打赏
0
0
0
0
37
分享
相关文章
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
JavaScriptDOM编程(基础&进阶)1
JavaScriptDOM编程(基础&进阶)1
79 0
JavaScriptDOM编程(基础&进阶)3
JavaScriptDOM编程(基础&进阶)3
69 0
JavaScriptDOM编程(基础&进阶)2
JavaScriptDOM编程(基础&进阶)2
76 0
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(下)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(下)
Python编程之魔法:从基础到进阶的代码实践
在编程的世界里,Python以其简洁和易读性而闻名。本文将通过一系列精选的代码示例,引导你从Python的基础语法出发,逐步探索更深层次的应用,包括数据处理、网络爬虫、自动化脚本以及机器学习模型的构建。每个例子都将是一次新的发现,带你领略Python编程的魅力。无论你是初学者还是希望提升技能的开发者,这些示例都将是你的宝贵财富。让我们开始这段Python编程之旅,一起揭开它的魔法面纱。
|
7月前
|
Java网络编程实战指南与示例代码
Java网络编程实战指南与示例代码