C语言 - 文件处理

C语言 - 文件处理 首页 / C语言入门教程 / C语言 - 文件处理

C中的文件处理使我们能够通过C程序创建,更新,读取和删除存储在本地文件系统中的文件。可以对文件执行以下操作。

  • 创建新文件
  • 打开现有文件
  • 从文件读取
  • 写入文件
  • 删除文件

C库中有许多函数可以打开,读取,写入,搜索和关闭文件。文件函数列表如下:

不。函数说明
1 fopen()打开新文件或现有文件
2 fprintf()将数据写入文件
3 fscanf()从文件中读取数据
4 fputc()将字符写入文件
5 fgetc()从文件中读取字符
6 fclose()关闭文件
7 fseek()将文件指针设置到给定位置
8 fputw()将整数写入文件
9 fgetw()从文件中读取一个整数
10 ftell()返回当前位置
11 rewind()将文件指针设置为文件的开头

打开文件 - fopen()

我们必须先打开文件,然后才能对其进行读取,写入或更新。 fopen()函数用于打开文件。下面给出了fopen()的语法。

FILE *fopen( const char * filename, const char * mode );

fopen()函数接受两个参数:

  • 文件名(字符串  - 如果文件存储在某个特定位置,那么我们必须提及文件存储的路径。例如,文件名可以类似于" c://some_folder/some_file.ext" 
  • 打开文件方式    - 这是一个字符串。

我们可以在fopen()函数中使用以下模式之一。

模式说明
r以读取模式打开文本文件
w以写入模式打开文本文件
a以追加模式打开文本文件
r +以读写模式打开文本文件
w +以读写模式打开文本文件
a +以读写模式打开文本文件
rb以读取模式打开一个二进制文件
wb以写入模式打开一个二进制文件
ab以追加模式打开一个二进制文件
rb +以读写模式打开一个二进制文件
wb +以读写模式打开一个二进制文件
ab +以读写模式打开一个二进制文件

fopen函数以以下方式工作。

  • 首先,它搜索要打开的文件。
  • 然后,它从磁盘加载文件并将其放入缓冲区。缓冲区用于提高读取操作的效率。
  • 它设置了一个字符指针,该指针指向文件的第一个字符。

考虑以下示例,该示例以写模式打开文件。

#include<stdio.h>
void main( )
{
  FILE *fp ;
  char ch ;
  fp = fopen("file_handle.c","r") ;
  while ( 1 )
  {
    ch = fgetc ( fp ) ;
    if ( ch == EOF )
      break ;
    printf("%c",ch) ;
  }
  fclose (fp ) ;
}

文件的内容将被打印。

#include;
void main( )
{
FILE *fp;//file pointer
char ch; 
fp = fopen("file_handle.c","r");
while ( 1 )
{
ch = fgetc ( fp ); //读取文件的每个字符并存储在字符文件中。
if ( ch == EOF )
break;
printf("%c",ch);
}
fclose (fp );
}

关闭文件 - fclose()

fclose()函数用于关闭文件。对文件执行所有操作后,必须将其关闭。 fclose()函数的语法如下:

int fclose( FILE *fp );

fprintf() 和 fscanf()

fprintf()函数

fprintf()函数用于将字符集写入文件。它将格式化的输出发送到流。C fprintf()和fscanf() 示例

语法:

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

示例:

#include<stdio.h> 
main(){
   FILE *fp;
   fp = fopen("file.txt", "w");//打开文件
   fprintf(fp, "Hello Learnfk.com...\n");//将数据写入文件
   fclose(fp);//关闭文件
}

fscanf()函数

fscanf()函数用于从文件读取字符集。它从文件中读取一个单词,并在文件末尾返回EOF。

语法:

int fscanf(FILE *stream, const char *format [, argument, ...])

示例:

#include<stdio.h>
main(){
   FILE *fp;
   char buff[255];//创建字符数组来存储文件数据
   fp = fopen("file.txt", "r");
   while(fscanf(fp, "%s", buff)!=EOF){
     printf("%s ", buff );
   }
   fclose(fp);
}

输出:

Hello Learnfk.com...

让我们看一个文件处理示例,该示例存储用户从控制台输入的员工信息。我们将存储员工的ID,姓名和工资。

#include<stdio.h> 
void main()
{
    FILE *fptr;
    int id;
    char name[30];
    float salary;
    fptr = fopen("emp.txt", "w+");/*  开启写入模式 */
    if (fptr == NULL)
    {
        printf("File does not exists \n");
        return;
    }
    printf("Enter the id\n");
    scanf("%d", &id);
    fprintf(fptr, "Id= %d\n", id);
    printf("Enter the name \n");
    scanf("%s", name);
    fprintf(fptr, "Name= %s\n", name);
    printf("Enter the salary\n");
    scanf("%f", &salary);
    fprintf(fptr, "Salary= %.2f\n", salary);
    fclose(fptr);
}

输出:

Enter the id 
1
Enter the name 
Learnfk
Enter the salary
120000 

现在从当前目录打开文件。对于Windows操作系统,请转到TC\bin目录,您将看到emp.txt文件。它将具有以下信息。

emp.txt

Id= 1
Name= Learnfk
Salary= 120000 

fputc() 和 fgetc()

fputc()函数用于将单个字符写入文件。它将字符输出到流。 C fputc()和fgetc() 示例

语法:

int fputc(int c, FILE *stream)

示例:

#include<stdio.h>
main(){
   FILE *fp;
   fp = fopen("file1.txt", "w");//打开文件
   fputc('a',fp);//将单个字符写入文件
   fclose(fp);//关闭文件
}

file1.txt

a

fgetc()函数从文件返回单个字符。它从流中获取一个字符。它在文件末尾返回EOF。

语法:

int fgetc(FILE *stream)

示例:

#include<stdio.h>
#include<string.h>
void main(){
  FILE *fp;
  char c;
  clrscr();
  fp=fopen("myfile.txt","r");

   while((c=fgetc(fp))!=EOF){
    printf("%c",c);
  }
  fclose(fp);
  getch();
}

myfile.txt

this is simple text message

fputs() 和 fgets()

C编程中的fputs()和fgets()用于从流中写入和读取字符串。让我们看看使用fgets()和fgets()函数编写和读取文件的示例。 fputs()和fgets() 示例

fputs()函数将一行字符写入文件。它将字符串输出到流。

语法:

int fputs(const char *s, FILE *stream)

示例:

#include<stdio.h>
#include<conio.h>
void main(){
  FILE *fp;
  clrscr();

  fp=fopen("myfile2.txt","w");
  fputs("hello Learnfk.com website",fp);

  fclose(fp);
  getch();
}

myfile2.txt

hello Learnfk website

fgets()函数从文件读取一行字符。它从流中获取字符串。

语法:

char* fgets(char *s, int n, FILE *stream)

示例:

#include<stdio.h>
#include<conio.h>
void main(){
  FILE *fp;
  char text[300];
  clrscr();

  fp=fopen("myfile2.txt","r");
  printf("%s",fgets(text,200,fp));

  fclose(fp);
  getch();
}

输出:

hello Learnfk website

fseek()

fseek()函数用于将文件指针设置为指定的偏移量。它用于将数据写入所需位置的文件。查看  fseek() 示例

语法:

int fseek(FILE *stream, long int offset, int whence)

在fseek()函数中使用了3个常量,它们分别是SEEK_SET,SEEK_CUR和SEEK_END。

示例:

#include<stdio.h>
void main(){
   FILE *fp;

   fp = fopen("myfile.txt","w+");
   fputs("This is learnfk", fp);
  
   fseek( fp, 7, SEEK_SET );
   fputs("learnfk toolfk", fp);
   fclose(fp);
}

myfile.txt

This is learnfk toolfk

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

数据结构与算法之美 -〔王争〕

SQL必知必会 -〔陈旸〕

Node.js开发实战 -〔杨浩〕

NLP实战高手课 -〔王然〕

人人都用得上的写作课 -〔涵柏〕

MySQL 必知必会 -〔朱晓峰〕

全链路压测实战30讲 -〔高楼〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

超级访谈:对话玉伯 -〔玉伯〕

好记忆不如烂笔头。留下您的足迹吧 :)