**文件概述:**所有的文件都可以通过流的形式,进行输入和输出操作。文件可以分为文本文件和二进制文件; #1:文本文件:也称为ASC||文件,这个文件在存放的时候,每个字符都对应一个字节;用于存放对应的ASC||码。
#2.二进制文件:不是保存ASC||文件:而是按照二进制编码的方式来保存文件内容;
文件可以分类:(从不同的角度) 用户的角度: #1,:普通文件是指驻留在磁盘或者其他外部介质上的一个有序数据集; #2.设备文件是指与主机相连的各种外部设备,如显示器,打印机,键盘等,在操作系统中,把外部设备也看做是一个文件来管理。把他们的输入和输出等同于对磁盘文件的读和写;
按照文件的内容可以分为; 源文件,目标文件,可执行文件,头文件,数据文件等…; 看文件操作
文件操作的一一些函数; #1.fputc(参数1:文件的路径,参数2:文件的指针);如果写入成功!!函数的返回值就是写入的字符; 如果写入失败返回的就是EOF; 看案列: #2.fgetc(参数1:文件指针)函数
#3.fputs()函数; 这个函数和fputc函数有点类似,不同的点在于就是fputc()一次只能写入一个字符串。fputs()可以写入多个字符即字符串; 看演示: #3.fgets(参数1:数组名,参数2:读取字符的个数,参数3:文件指针)函数: fgets()函数和fgetc()函数的区别就是fgetc()函数只可以一次读取一个字符串,但是呢fgets()函数可以一次读取好多字符即字符串; 看演示: #5:fscanf()函数和fprintf()函数; fprintf()格式化的写入函数的返回值是写入内容的字节大小;看演示 fscanf()函数看演示:
#7:fread()函数和fwrite()函数 fread(buffer,size,count,fp) fwrite(buffer,size,count,fp) buffer:数据转换的地址; size:要读写的字节数; count:操作多少次: fp:目的文件指针; 演示: 贴上最后的演示源码:
#include "stdio.h"
struct adress_list {
char name[10];
char ad[20];
char tel[15];
} info[100];
void save(int n) {
FILE *fp;
fp = fopen("D:\\CLion\\Projects\\TEXTS\\two.txt", "wb");
for (int j = 0; j < n; ++j) {
fwrite(&info[j], sizeof(struct adress_list), 1, fp);
}
fclose(fp);
}
void show(int n) {
FILE *fp;
fp = fopen("D:\\CLion\\Projects\\TEXTS\\two.txt", "rb");
for (int j = 0; j < n; ++j) {
fread(&info[j], sizeof(struct adress_list), 1, fp);
printf("%15s%20s%20s\n", info[j].name, info[j].ad, info[j].tel);
}
fclose(fp);
}
int main() {
int i, n;
printf("告诉我你要输入多少次\n");
scanf("%d", &n);
printf("在下面输入你的信息,顺序是:name,adress,tel\n");
for (i = 0; i < n; i++) {
printf("NO%d\n", i + 1);
scanf("%s%s%s", info[i].name, info[i].ad, info[i].tel);
save(n);
}
show(n);
}
|