文件的基本操作:
1.打开文件
File * fopen(char *fileURL,char *Mode); 文件路径 文件格式
1.声明一个文件指针,接收fopen返回的文件指针
File *fp;
2.fopen打开文件
fp=fopen("1.txt","读写方式");
注意点:如果fp==NULL,说明打开文件失败
路径:
相对路径:同一个文件夹下
绝对路径:明确的路径
读写方式:
w:write 写
r:read 读
a:append 追加
+: 读,写
b:binary 二进制
注意:
w:如果文件存在会清空文件,如果文件不存在会创建一个文件
r:步具备创建功能,也不具备清空功能
a:追加,不清空,在原文件后面接着写
2.读写文件
1.以字符方式读写
fgetc() fputc()
2.以字符串方式读写
fgets() fputs()
3.格式化读写
fprintf() fscanf()
4.结构化读写
fread() fwrite()
3.关闭文件
文件操作一定要关闭文件
fclose(File,*fp);
实现代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
struct boy {
char name[15];
char sex[15];
int age;
};
int main() {
FILE* read;
read = fopen("1.txt", "r");
if (read == NULL) {
cout << "打开文件失败" << endl;
}
else {
cout << "文件存在" << endl;
}
read = fopen("1.txt", "w");
if (read == NULL) {
cout << "打开文件失败" << endl;
}
else {
cout << "文件存在" << endl;
}
fclose(read);
cout << "-------------------" << endl;
FILE* fp = fopen("2.txt", "w");
char str[] = { "I love you" };
for (int i = 0;i < strlen(str) + 1;i++) {
fputc(str[i],fp);
}
fclose(fp);
fp = fopen("2.txt", "r");
char value = fgetc(fp);
while (value != EOF) {
cout << value;
value = fgetc(fp);
}
cout << endl;
fclose(fp);
cout << "-------------------" << endl;
FILE* fps = fopen("2.txt", "w");
fputs(str, fps);
fclose(fps);
fps = fopen("2.txt", "r");
char strFile[1024];
fgets(strFile, 1024,fps);
puts(strFile);
cout << "-------------------" << endl;
struct boy boys[3] = {
{"li","nan",18},
{"ming","nan",18},
{"liu","nan",19}
};
FILE* fpg = fopen("3.txt", "w");
for (int i = 0;i < 3;i++) {
fprintf(fpg,"%s\t%s\t%d\n", boys[i].name, boys[i].sex, boys[i].age);
}
fclose(fpg);
struct boy tboy;
fpg = fopen("3.txt", "r");
while (fscanf(fpg, "%s\t%s\t%d\n", &tboy.name, &tboy.sex, &tboy.age)!=EOF) {
printf("%s\t%s\t%d\n", tboy.name, tboy.sex, tboy.age);
}
fclose(fpg);
cout << "-----------------" << endl;
FILE* write = fopen("4.txt", "w");
fwrite(&boys[0], sizeof(struct boy), 3, write);
fclose(write);
FILE* readfile = fopen("4.txt", "r");
struct boy tboys[3];
fread(&tboys[0], sizeof(struct boy), 3, readfile);
for (int i = 0;i < 3;i++) {
printf("%s\t%s\t%d\n", tboys[i].name, tboys[i].sex, tboys[i].age);
}
fclose(readfile);
return 0;
}
运行结果: