一. 文件的打开和关闭

首先确认文件路径的字符串及文件名,随后使用fopen进行打开文件操作

FILE*fp;//定义一个文件变量
fp=fopen("D:\\dic.txt","r");//打开文件
fclose(fp);//关闭文件

打开参数:
打开方式:r(读),w(写),a(附加);
文件类型:b;
混合操作+(r+(可读))

成功打开,可以观察到非零值,否则返回NULL

二.文本文件的顺序读写

字符的输入输出:fgetc() / fputc()
字符串的输入输出:fgets() / fputs()

1.字符读入,输出

eg:
从一个文件中读入字符,并写在另一个文件中

int main (void)
{
FILE *fp1,*fp2;//定义一个文件变量
char text;//定义字符变量
int i;
fp1=fopen("D:\\dic1.txt","r");//读文件
fp2=fopen("D:\\dic2.txt","w+");//写文件
for(i=0;i<10;i++)
{
text=fgetc(fp1);//获得fp1中的字符
fputc(text,fp2);//输出fp1中的字符到文件fp2中
}
fclose(fp1);//关闭文件
fclose(fp2);//关闭文件system("pause");
return 0;
}

dic1.txt与dic2.txt对比,发现数据丢失

发生这种情况是由于忽略了fgetc()函数将一些转义字符也进行读入,导致循环读取次数不够

解决上述问题有两种方法

(1)增加循环次数

int main (void)
{
FILE *fp1,*fp2;//定义一个文件变量
char text;//定义字符变量
int i;
fp1=fopen("D:\\dic1.txt","r");//读文件
fp2=fopen("D:\\dic2.txt","w+");//写文件
for(i=0;i<15;i++)
{
text=fgetc(fp1);//获得fp1中的字符
fputc(text,fp2);//输出fp1中的字符到文件fp2中
}
fclose(fp1);//关闭文件
fclose(fp2);//关闭文件system("pause");
return 0;
}

结果文件对比

(2)使用EOF来判断是否读到文件的末尾

int main (void)
{
FILE *fp1,*fp2;//定义一个文件变量
char text;//定义字符变量
fp1=fopen("D:\\dic1.txt","r");//读文件
fp2=fopen("D:\\dic2.txt","w+");//写文件
while(text!=EOF)//读到文件末尾,未到文件结尾则继续执行(EOF初值为-1)
{
text=fgetc(fp1);//获得fp1中的字符
fputc(text,fp2);//输出fp1中的字符到文件fp2中
}
fclose(fp1);//关闭文件
fclose(fp2);//关闭文件system("pause");
return 0;
}

结果文件对比

2.字符串读入,输出

fgets()函数从文本读取一个字符串,并将其保留到缓存指针中,与利用返回值的fgetc()不同

格式
fgets(缓存指针,字符个数n,文件指针)
从文本读取字符串,当读取了n-1个字符/读取到回车符/文件末尾,读取结束
fputs(字符串,文件指针)

eg:逐一字符串复制一个文件。使用for / while

int main (void)
{
FILE *fp1,*fp2;//定义一个文件变量
char text[10];//定义字符串变量
int i;
fp1=fopen("D:\\dic1.txt","r");//读文件
fp2=fopen("D:\\dic3.txt","w+");//写文件
for(i=0;i<50;i++)
{if(!feof(fp1)){fgets(text,10,fp1);//获得fp1中的字符串fputs(text,fp2);//输出fp1中的字符串到文件fp2中}
}fclose(fp1);//关闭文件
fclose(fp2);//关闭文件system("pause");
return 0;
}

三.文本数据的读取和计算——格式化操作

fscanf()按照固定格式读入数据;
fprintf()按照固定格式输出数据;
fscanf(文件指针,格式,输入缓冲列表);
fprint(文件指针,格式,输出缓冲列表);

在使用 fscanf时,需要严格按照格式进行内容操作,否则会产生异常
在使用 fscanf时,可以使用feof(fp)判断是否到达文件结尾

eg:
读入数据,并将数据计算的结果输出使用for/Whie,并引入feof

int main (void)
{
FILE *fp1,*fp2;//定义两个文件变量
int temp;//定义整型变量
fp1=fopen("D:\\dic1.txt","r");//读文件
fp2=fopen("D:\\dic4.txt","w+");//写文件
while(!feof(fp1))
{ fscanf(fp1,"d%\n",&temp);//读入标准数据temp=temp+1;//数据运算fprintf(fp2,"d%\n",temp);//输出数据运算结果
}fclose(fp1);//关闭文件
fclose(fp2);//关闭文件system("pause");
return 0;
}

运行结果

关于C语言中文件的基本操作相关推荐

  1. C语言中文件的基本操作函数fprintf和fscanf实例介绍

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

  2. C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  3. C语言中文件的读取和写入

    C语言中文件的读取和写入 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理文本型和二进制型的不同 (因为电脑只认识二进制格式) 在C语言中写文件 //获取文件指针 FIL ...

  4. python文件定位函数_C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  5. c语言中 文件,c语言中文件的使用方法

    c语言中文件的使用方法 一.文件指针的定义 FILE *fp//注意FILE的大写 二.文件的打开 fp=fopen("(路径)文件名.文件格式后缀","文件的使用方法& ...

  6. C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析

    C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析 C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 ...

  7. c语言中fputc函数的作用是,C语言中文件的读写函数之 fputc、fgetc

    C语言中文件的读写函数之 fputc.fgetc 首先,我们要知道fputs和fgetc这两个函数是包含在标准库函数中的函数,换句话说,就是封装在标准函数中的两个函数.其中这两个函数都是每次只能输入或 ...

  8. C语言中文件的打开与关闭

    这里写代码片 //文件的读取 # include<stdio.h> #include<io.h> void main() { FILE*fp; //if((fp=fopen(& ...

  9. C语言中文件的打开与保存

    C语言中文件的打开与保存 1.打开文件 /*打开文件,返回人数,将记录读入内存*/ int open() {int m=0;FILE *fp;if((fp=fopen("H:\\studen ...

最新文章

  1. CSS中background-position属性
  2. 如何具体学习计算机视觉
  3. matlab二值化图像_小白啃骨头之图像识别
  4. 「走过」微软、优步,老工程师告诉你哪些数据结构和算法最重要
  5. 统计学习方法笔记 -- 概论
  6. Telnet连接详细步骤
  7. 广州的11个辖区_广州上半年经济发展情况,天河区总量超过2000亿
  8. python随机抽样numpy_python numpy之np.random的随机数函数使用介绍
  9. “约见”面试官系列之常见面试题第十五篇之jsonp(建议收藏)
  10. java 开源客服系统_一个开源的智能客服系统
  11. 适配器模式和桥接模式
  12. 如何进行多平台整合,实现数据变现?
  13. Nginx常用的模块
  14. 8.19华为笔试题目c++
  15. 如何使用微信、支付宝提现免手续费
  16. 新星计划、原力计划新动态,大波的奖牌来袭速来领取
  17. 文本分析论文基本方法论
  18. twig模板引擎使用php,Twig模板引擎
  19. UVA之11549 - Calculator Conundrum
  20. STM32学习记录——74HC595四位数码管显示

热门文章

  1. 德鲁伊druid数据库明文密码加密
  2. Requests Header | Http Header
  3. Chrome浏览器导出插件crx
  4. 计算机更新安装失败,电脑更新安装失败
  5. 【代码源 Div1#103】子串的最大差 Codeforces - 817D,力扣2104,1900分
  6. JAVA面向对象OOP→继承extends、构造方法super、方法重写override、样例代码
  7. JavaScript是什么
  8. case when then else_SQL 优化大神玩转 MySQL函数系列_case_when 的坑
  9. 从Qt的图片文件传输来看Qt 中UDP的收发消息writeDatagram和readDatagram
  10. Educational Codeforces Round 54 (Rated for Div. 2): D. Edge Deletion(最短路树)