通过网站做跳板,大连专业网页设计,外包做网站需要多少钱,wordpress 迅雷下载在我刚开始学习c语言的时候就跳过了这一章节#xff0c;但在后面慢慢发现这一章节还是比较重要的,如果你报考了计算机二级c语言的话#xff0c;你应该可以看到后面的三个大题有时会涉及到这章。所以说这章还是非常重要的。 目录
前言
一.打开文件
1.Fopen( )函数返回值 2但在后面慢慢发现这一章节还是比较重要的,如果你报考了计算机二级c语言的话你应该可以看到后面的三个大题有时会涉及到这章。所以说这章还是非常重要的。 目录
前言
一.打开文件
1.Fopen( )函数返回值 2文件打开方式
二.关闭文件
三.以字符形式读写文件
1.Fgetc( )
2.Fputc( )
四.以字符串形式读写文件
1.fgets( )
2.fputs( )
五.以数据块形式读写文件
六.格式化读写文件
七.随机读写文件
八.题目分享
1.复制文件内容
2.统计文件中的字符数
3.列出目录中的所有文件
4.读取并显示文件内容
5.向文件中追加内容
6.创建新文件并写入数据
7.按行读取文件内容
8.删除文件中的特定行
9.文件重命名
10.文件大小
11.查找文件 前言
C 语言对文件有打开文件、读取和添加数据、插入和删除数据、关闭文件、删除文件等 操作。 与其他编程语言相比C 语言文件操作的接口简单易学。在 C 语言中为了统一对各种 硬件的操作简化接口不同的硬件设备也都被看成一个文件其操作方法与普通文件的操 作方法类似。
废话不多说直接开始正题。
一.打开文件
使用 头文件中的 fopen() 函数即可打开文件它的用法为
FILE *fopen(char *filename, char *mode);
filename 为文件名包括文件路径mode 为打开方式它们都是字符串。
1.Fopen( )函数返回值
fopen 函数的返回值为 FILE 类型指针。如我们可以建立一个 FILE 型指针变量来存储 fopen 函数的返回值
FILE *fp fopenaaa.txt,r上面语句作用为用只读的方式打开文件 aaa.txt 并用 fp 指向该文件以后就可以直接通过 操作 fp 来操作文件fp 也称文件指针。
如果文件打开失败fopen( )函数的返回值为 NULL
2文件打开方式
打开方式说明r只读方式打开文件只能读文件的内容不能写入文件必须存在w以写入方式打开文件只允许写操作。文件不存在则新建文件若文件存在则覆盖写入a追加方式打开文件在文件末尾写入数据。若文件不存在则新建文件若文件存在则追加在文件末尾写入 文件原内容保留r读写方式打开文件但文件必须存在否则打开文件失败。w相当于 w 和 r两者叠加既可读也可写。若文件存在则清空文件内容写入若不存在则创建新文件a相当于 a 和 r两者叠加既可读也可写。若文件存在则文件尾部追加写入文件原内容保留若不存在则创 建新文件。t文本文件方式打开若无 t 或 b 则默认为 tb二进制文件方式打开
注fopen函数在使用时必须指明权限但是读写方式可省略tb 读写权限和读写方式可以组合使用一般权限放在前面读写方式放在后面。
二.关闭文件
文件使用完毕必须关闭文件以避免出现数据错误和丢失。 C 语言中使用 fclose( )函数实现文件关闭操作当文件成功关闭时函数返回值为 0若返 回非 0 值则说明文件关闭发生错误。 Fclose 函数的用法为
int fcloseFile *fp;
fp 为文件指针。
三.以字符形式读写文件
C 语言中读写文件很灵活每次可以以字符形式读写一个字符也可以读写一个字符 串还可以随意字节读写本节主要介绍以字符形式读写文件。
字符形式读写主要用到两个函数fgetc( )和 fputc( )
1.Fgetc( )
fgetc 全称为 file get character即从文件读取一个字符函数定义形式为
int fgetcFILE *fp
fp 为文件指针。函数返回值为 fgetc 获取到的字符若读到文件末尾或没有读取成功则 返回 EOFend of file。EOF 是 stdio 定义的一个宏值值为-1。fgetc 函数的返回值类型定义 为 int 而不是 char 就是要容纳这个 EOF。
char ch;
FILE *fpfopen(a.txt,r);
chfgetc(fp);
上述代码表示从 a.txt 文件读取一个字符并赋值给变量 ch。 在文件内部有一个专门记录文件读写位置的指针在 fopen 打开文件时该指针指向第 一个字节。使用 fgetc 函数读取文件后该指针向后移动一个字节这样再次调用 fgetc 函数 就可以继续读取下一个字符了。
EOF 有可能是其他负数不一定是1要看编译器的实现。
2.Fputc( )
fputc 全称为 file put character即从文件写入一个字符函数定义形式为
int fputcint ch,FILE *fp
ch 为要写入的字符fp 为文件指针。函数返回值为 fputc 写入的字符写入失败返回 EOFend of fileEOF 是 stdio 定义的一个宏值为-1。之所以 fgetc 函数的返回值类型定义为 int 而不是 char 就是因为要容纳这个 EOF。
char cha;
fputc(ch,fp);
上述代码表示把字符 ch 写入到文件 fp。
四.以字符串形式读写文件
fgetc( )和 fputc( )函数每次向文件写入一个字符但是实际开发往往要一次写入一个字符 串因此需要用到字符串读写文件函数。
1.fgets( )
fgets( )全称为 file get string即在指定文件读取字符串它的函数定义为
char *fgets (char *str,int n,FILE *fp);
其中str 为字符数组n 为整数代表要读取的字符个数fp 为文件指针。该函数返回 值为字符数组首地址 str读取失败和读到文件末尾都会返回 NULL。
2.fputs( )
fputs( )全称为 file put string即向指定文件写入一个字符串一般形式为
int fputs(char *str, File *fp);
str 为要写入的字符串pf 为文件指针。如写入成功则返回值为非负数如失败则返回 EOF。
五.以数据块形式读写文件
在 C 语言中读写文件不一定是以字符的形式如要读写一个数组或一个结构体变量的 值时之前学习的读写方式就不适用了需要用 fread( )和 fwrite( )函数来实现上述读写。对于 windows 操作系统使用 fread( )和 fwrite( )函数要以二进制形式打开文件。
fread( )函数的一般形式为
fread(buffer,size,count,fp);
fwrite( )函数的一般形式为
fwrite(buffer,size,count,fp);
其中buffer 为内存区块的指针可以是数组、变量、结构体等。fread( )中的 buffer 用 于存放读取到的数据fwrite( )中的 buffer 用于存放要写入的数据。 size 表示每个数据块的字节数count 表示要读写的数据块的块数fp 表示文件指针。 理论上每次读写 size*count 个字节的数据。
fread(fa,4,5,fp);
上述代码表示从 fp 指向的文件中读取 4 个字节送入一个 fa 中连续读 5 次即读取 20 个字节。
六.格式化读写文件
文件读写要用到 fscanf()和 fprintf()函数。 函数一般形式为
fscanf(FILE *fp,char *format,…);
fprintf(FILE *fp,char *format,…);
其中fp 为文件指针format 为格式控制字符串…表示参数列表。与 scanf()和 printf() 相比就多了一个文件指针参数 fp。fprintf()返回成功写入字符的个数失败返回负数。 fscanf()返回参数列表成功赋值的参数个数。
七.随机读写文件
实现随机读写的关键是按需求移动文件指针这个操作称为文件定位 可以利用 rewind()和 fseek()函数移动文件指针。 rewind()用来将位置指针移动到文件开头一般形式为
rewind(FILE *fp); 此函数没有返回值。
fseek()用来移动文件指针到任意位置,一般形式为
fseek(FILE *fp ,long offse,int origin);
例如要把文件指针移动到距离文件开头 200 个字节的地方
fseek(fp,200,SEEK_SET);
在文件指针移动好之后就可以进行文件读写了由于使用二进制方式打开文件所以常 用 fread()和 fwrite()函数来读写文件。
八.题目分享
1.复制文件内容
编写一个C程序将一个文件的内容复制到另一个文件中。
#include stdio.h
#include stdlib.hint main() {FILE *fps, *fpt;char ch;// 打开源文件和目标文件fps fopen(source.txt, r);if (fps NULL) {perror(无法打开源文件);exit(EXIT_FAILURE);}fpt fopen(target.txt, w);if (fpt NULL) {perror(无法打开目标文件);fclose(fps); // 关闭已打开的源文件exit(EXIT_FAILURE);}// 读取源文件内容并写入目标文件while ((ch fgetc(fps)) ! EOF) {fputc(ch, fpt);}// 关闭文件fclose(fps);fclose(fpt);printf(文件复制成功\n);return 0;
}2.统计文件中的字符数
编写一个C程序统计一个文本文件中的字符数。
#include stdio.h
#include stdlib.hint main() {FILE *fp;int count 0;char ch;// 打开文件fp fopen(example.txt, r);if (fp NULL) {perror(无法打开文件);exit(EXIT_FAILURE);}// 读取字符并计数while ((ch fgetc(fp)) ! EOF) {count;}// 关闭文件fclose(fp);printf(文件中的字符总数为%d\n, count);return 0;
}3.列出目录中的所有文件
编写一个C程序列出指定目录中的所有文件。仅适用于类Unix系统包括Linux和macOS。在Windows系统上你需要使用Windows API函数来列出目录中的文件。
#include stdio.h
#include dirent.hint main() {DIR *d;struct dirent *dir;d opendir(.);if (d) {while ((dir readdir(d)) ! NULL) {printf(%s\n, dir-d_name);}closedir(d);}return 0;
}4.读取并显示文件内容
编写一个C程序读取一个文本文件的内容并在控制台上显示。
#include stdio.h
#include stdlib.hint main() {FILE *fp;char ch;// 打开文件fp fopen(content.txt, r);if (fp NULL) {perror(无法打开文件);exit(EXIT_FAILURE);}// 读取并显示文件内容while ((ch fgetc(fp)) ! EOF) {putchar(ch);}// 关闭文件fclose(fp);return 0;
}5.向文件中追加内容
编写一个C程序向一个文本文件的末尾追加一行文本。
#include stdio.h
#include stdlib.hint main() {FILE *fp;// 打开文件用于追加内容fp fopen(content.txt, a);if (fp NULL) {perror(无法打开文件);exit(EXIT_FAILURE);}// 向文件追加一行文本fprintf(fp, \n这是追加的文本行。\n);// 关闭文件fclose(fp);printf(文本已成功追加到文件。\n);return 0;
}6.创建新文件并写入数据
编写一个C程序创建一个新的文本文件并向其中写入一些初始数据。
#include stdio.h
#include stdlib.hint main() {FILE *fp;// 创建并打开新文件用于写入fp fopen(newfile.txt, w);if (fp NULL) {perror(无法创建文件);exit(EXIT_FAILURE);}// 向文件写入数据fprintf(fp, 这是新文件的第一行。\n);fprintf(fp, 这是第二行。\n);// 关闭文件fclose(fp);printf(新文件已创建并写入数据。\n);return 0;
}7.按行读取文件内容
编写一个C程序按行读取一个文本文件的内容并显示每一行的内容。
#include stdio.h
#include stdlib.h#define MAX_LINE_LENGTH 1024int main() {FILE *fp;char line[MAX_LINE_LENGTH];// 打开文件fp fopen(lines.txt, r);if (fp NULL) {perror(无法打开文件);exit(EXIT_FAILURE);}// 逐行读取文件内容while (fgets(line, MAX_LINE_LENGTH, fp) ! NULL) {printf(%s, line);}// 关闭文件fclose(fp);return 0;
}8.删除文件中的特定行
编写一个C程序读取一个文本文件删除文件中的特定行例如包含特定单词的行并将结果保存到新文件中。
#include stdio.h
#include stdlib.h
#include string.h#define MAX_LINE_LENGTH 1024
#define TARGET_WORD deleteint main() {FILE *fps, *fpt;char line[MAX_LINE_LENGTH];// 打开源文件fps fopen(source.txt, r);if (fps NULL) {perror(无法打开源文件);exit(EXIT_FAILURE);}// 打开目标文件用于写入fpt fopen(target.txt, w);if (fpt NULL) {perror(无法打开目标文件);fclose(fps);exit(EXIT_FAILURE);}// 读取并处理每一行while (fgets(line, MAX_LINE_LENGTH, fps) ! NULL) {if (strstr(line, TARGET_WORD) NULL) {fputs(line, fpt); // 如果行不包含目标单词则写入新文件}}// 关闭文件fclose(fps);fclose(fpt);printf(特定行已从文件中删除。\n);return 0;
}9.文件重命名
编写一个C程序实现文件的重命名功能。
#include stdio.h
#include stdlib.hint main() {if (rename(oldname.txt, newname.txt) 0) {printf(文件重命名成功。\n);} else {perror(文件重命名失败);exit(EXIT_FAILURE);}return 0;
}10.文件大小
编写一个C程序计算并显示一个文件的大小以字节为单位。
#include stdio.h
#include stdlib.hint main() {FILE *fp;long size;// 打开文件fp fopen(file.txt, rb);if (fp NULL) {perror(无法打开文件);exit(EXIT_FAILURE);}// 移动到文件末尾fseek(fp, 0, SEEK_END);// 获取文件大小size ftell(fp);// 关闭文件fclose(fp);printf(文件大小为%ld 字节\n, size);return 0;
}11.查找文件
编写一个C程序在当前目录中查找具有特定扩展名的所有文件。
#include stdio.h
#include stdlib.h
#include dirent.h
#include string.h#define EXTENSION .txtint main() {DIR *d;struct dirent *dir;char *ext;d opendir(.);if (d) {while ((dir readdir(d)) ! NULL) {ext strrchr(dir-d_name, .); // 获取文件扩展名if (ext strcmp(ext, EXTENSION) 0) {printf(%s\n, dir-d_name);}}closedir(d);}return 0;
}————由于博主还是大三的在读生时间有限每天会不定时更新一些学习经验和一些32的项目如果喜欢就点点关注吧大佬们————