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()的语法。
FILE *fopen( const char * filename, const char * mode );
fopen()函数接受两个参数:
我们可以在fopen()函数中使用以下模式之一。
链接:https://www.learnfk.comhttps://www.learnfk.com/c-programming/file-handling-in-c.html
来源:LearnFk无涯教程网
模式 | 说明 |
---|---|
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()函数的语法如下:
int fclose( FILE *fp );
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()函数用于从文件读取字符集。它从文件中读取一个单词,并在文件末尾返回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()函数用于将单个字符写入文件。它将字符输出到流。 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
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() 示例
语法:
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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)