C语言中文件的读写

本文介绍了C语言中文件的基本操作,包括文件的打开、读取、写入及关闭等过程。详细解释了fopen、fscanf、fgets、fprintf、fputs等函数的使用方法,并通过示例展示了如何结合读写操作实现文件内容的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言中文件的读写

文件的读取

文件的读取操作

1.先声明一个FILE(文件类型)的指针*fp FILE *fp,*fpm = NULL;
2.再使用fopen语句返回一个文件指针
fp = fopen("filetest.txt", "w+");
其中路径可以是相对路径也可以是绝对路径
相对路径用,用正斜杠’/’ 比如 fp = fopen("./data.txt","r");
绝对路径用,用反斜杠’\’ 比如 fp = fopen("E:\\ctest\\file\\data.txt","r");
3.路径后面紧跟一个表示读写模式的字符串
该字符串的相关表示含义如下

读写模式意义
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

4.使用fscanf或者fgets和fseek等函数进行文件的读取操作

fscanf的相关用法
	char s[200];
	long l;
	float f;
	char c;
	//往字符串数组s中读入文件指针fp中的一个字符串
	fscanf(fp,"%s",s);  
	//往长整型l中读入文件指针fp中的一个长整形
    fscanf(fp,"%ld",&l);  
	//往单精度浮点型中读入文件指针fp中的一个单精度浮点
    fscanf(fp,"%f",&f);  
	//往字符c中读入文件指针fp中的一个字符
    fscanf(fp,"%c",&c);  
fgets的相关用法

fgets(cache,size,fp);

  1. fgets是从文件流中读取一数据的函数,每次读取一行
  2. fgets函数遇到’\n’就会结束此次读取
  3. cache表示接收读入的字符串名
  4. size表示读入的字符数,如果文件流中一行的字符数大于size,则自动截断为多行
  5. fp表示需要读入数据的文件指针
  6. 读取完文件需要关闭文件
    fclose(fp);
fgets使用示例
FILE *fp = NULL;
char buffer[256];
fp = fopen("filetest.txt", "w");
fgets(buffer, 255, (FILE*)fp);
fseek的相关用法

int fseek(FILE *stream, long offset, int fromwhere);

  1. 第一个参数stream为文件指针
  2. 第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
  3. 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET 或者一个int型整数
  4. fseek主要用于方便的读写文件,fseek作用是移动文件的位置指针的指向位置
  5. 如果fseek移动位置指针成功则返回0 不成功则返回任意非零数
fseek的使用示例
	//把fp文件指针移动到离文件开头100字节处;
	fseek(fp,100L,SEEK_SET);
	//把fp文件指针移动到离文件当前位置100字节处;
	fseek(fp,100L,SEEK_CUR);
	//把fp文件指针退回到离文件结尾100字节处。
	fseek(fp,-100L,SEEK_END);

文件的写入

文件的写入操作

文件的写入和文件的读取前几步是一样的
1.先声明一个FILE(文件类型)的指针*fp FILE *fp,*fpm = NULL;
2.再使用fopen语句返回一个文件指针
fp = fopen("filetest.txt", "w+");
3.使用fprintf和fputs等函数进行文件的写入

fprintf的相关用法

int fprintf (FILE* stream, const char*format, [argument]);

  1. fprintf函数会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定的文件中,直到出现字符串结束(’\0’)为止。
  2. fprintf函数在使用上和printf函数是差不多的 唯一的区别是printf是输出到控制台而fprintf是输出到文件中
  3. fprintf函数和printf一样返回值是实际控制输出的字符数,包括数字,字母,标点符号,空格等。
fprintf使用示例
FILE *fp = NULL;
fp = fopen("filetest.txt", "w");
fprintf(fp, "This is testing for fprintf...\n");
fputs的相关用法

int fputs(const char *str, FILE *stream);

  1. str:这是一个字符数组,包含了要写入的以空字符终止的字符序列。
  2. stream:指向FILE对象的指针,该FILE对象标识了要被写入字符串的流。
  3. fputs函数的意思把字符串写入到指定的流(stream)中,但不包括空字符。
  4. fputs函数在成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为非负整数;否则返回-1。
fputs使用示例
FILE *fp = NULL;
fp = fopen("filetest.txt", "w");
fputs("This is testing for fputs...\n", fp);

文件的读写应用

该代码为综合了文件的读取和写入等操作的示范程序

#include <stdio.h>

int main()
{
   FILE *fp,*fpm = NULL;
   //fopen打开文件 读写模式为w+ 返回文件指针
   /**
    r	打开一个已有的文本文件,允许读取文件。
    w	打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
    a	打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
    r+	打开一个文本文件,允许读写文件。
    w+	打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
    a+	打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。
    **/
   fp = fopen("filetest.txt", "w+");
   //使用两种输出函数把数据输出到文件中
   fprintf(fp, "This is a test for fprintf...\n");
   fputs("This is a test for fputs...\n", fp);
   //fclose 关闭文件 如果不关闭文件 而多次打开一个文件 可能会出现脏数据的问题
   fclose(fp);
   char buff[255];
    //以只读模式 r 打开文件 返回文件指针
   fpm = fopen("filetest.txt", "r");
   //使用fscanf读入一个字符串 遇到空格结束
   fscanf(fpm, "%s", buff);
   printf("1: %s\n", buff );
   //使用fgets读入一个字符串 最长(255-1)个字符 遇到\n结束 就是读入一行的数据
   fgets(buff, 255, (FILE*)fpm);
   printf("2: %s\n", buff );
   //使用fgets读入一个字符串 最长(255-1)个字符 遇到\n结束 就是读入一行的数据
   fgets(buff, 255, (FILE*)fpm);
   printf("3: %s\n", buff );
   fclose(fpm);
   return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值