欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言文件操作总结

程序员文章站 2022-07-07 10:39:40
...

1、文件的写

  • 今天也要冲冲冲

首先还是先看一个简单的例子:

include<stdio.h>
 
int main()
{
 FILE *fp; //声明一个文件指针,指向文件缓冲区的首地址 
 char ch;
 
 if( (fp = fopen("file_1.txt","a")) == NULL ) //w+打开可读写文件,若文件存在则清零,不存在则新建文件,a 模式不清零 
 {
  printf("Cannot open file, press any key to exit!"); //文件无法打开 
 }
  
  printf("Input a string:\n");
 
 while ((ch = getchar()) != '\n' )
 {
  putc(ch,fp); //该函数将字符写入文件,与 fputc 的区别? 感觉没区别 好像一个是putc宏 一个fputc是函数
 }
  
 fclose(fp); 
     
 return 0;
}

这个例子就是实现打开或新建一个文本文件,然后写入用户在控制台输入的数据。

为了避免文件打开失败导致的程序异常,打开文件一般按照如下格式:

if( (fp = fopen("file_1.txt","a")) == NULL ) //w+打开可读写文件,若文件存在则清零,不存在则新建文件,a 模式不清零 
{
 printf("Cannot open file, press any key to exit!"); //文件无法打开 
}

最后也是非常重要的一部,对文件读写完毕后需要关闭文件,防止文件打开过多造成的文件读写混乱。

使用 fclose()函数关闭一个文件,

关闭文件,正常关闭时返回0,否则返回1
关闭时,系统会清除缓冲区,并把数据输出到磁盘文件,释放缓冲单元,使文件指针与具体文件脱钩。

fclose(fp);

2、文件的读

到这里关于文件的写操作就基本上是这些,下面是关于文件的读操作,其实和写差不多。

先看一下完整的代码

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
 FILE *fp;
 char ch; 
 char str[80];
 char file_name[15]; //输入文件名称缓冲 
   
 //如果文件和本程序在同一个文件下面,则直接输入txt文件名即可 
 //如果不在同一目录下面,则需要输入完整文件路径格式 
 //如 : e:\\test.txt 
   
 printf("please enter the filename: "); //注意输入文件名时需要带上文件的后缀.txt 
  
 gets(file_name); //gets函数用来读取用户输入的字符串,专门针对字符串处理设计的 
  
  if((fp = fopen(file_name,"r")) == NULL ) //r模式不能写入数据,只能读取 
 {
  printf("Cannot open file, press any key to exit!\n"); //文件无法打开 
  exit(0); 
 }
 
/* 
 while( (ch = getc(fp)) != EOF )  //getc函数从文件中读取单个字符 
 {
  putchar(ch);     //循环输出单个字符 
 }
 putchar('\n'); //输出一个换行 
*/
 
 
 while((fgets(str,80,fp)) != NULL) 
  puts(str);   
   
 fclose(fp);
}