文件操作
1.文件
一般指存储在外部介质上的数据集合,比如我们经常使用的txt,bmp,ipg,exe,rmvb等等。通常将他们存放在磁盘或者可移动盘等介质中。文件是操作系统存放数据的最小单位,数据的输入设备,输出设备。数据的输入输出伴随着整个系统。数据流:输入流和输出流,文本流和二进制流。
C语言文件操作三部曲:打开文件(FILE*fopen),读写文件,关闭文件。
2.变参数函数
变参数函数
3.
int printf(const char* ptr,...);//三个点代表可变参数,参数个数不定,格式化后的字符串存放到输出设备里面
int sprintf(char* buff, const char* ptr,...);//格式化后的字符串存放到buff里面
int fprintf(FILE* fp, const char* ptr,...);//格式化后的字符串存放到输出设备里面
int sprintf(char* buff, const char* ptr, ...)//格式化字符串函数
{
}
int main()
{
int a = 10, b = 20;
char buff[30];
int len = sprintf(buff, "a=%d b=%d \n", a, b);//len返回字符串长度
}
//atoi 字符串转换为整型 itoa 整型转换为字符串
4.写文件和读文件
#include<stdio.h>
int SaveData()//写入数据
{
int ar[] = { 12,23,34,4,5,56,67,78,89,90,100 };
int n = sizeof(ar) / sizeof(ar[0]);
FILE* fp = nullptr;
//fp = fopen("yhp.txt","w");//内核区
errno_t res = fopen_s(&fp, "D:\\yhp.txt", "w");
if (fp == nullptr)
{
printf("fopen file error %d \n", res);
return 1;
}
for (int i = 0; i < n; ++i)
{
//printf("%d", ar[i]);//stdout
fprintf(fp, "%5d ", ar[i]);
}
fclose(fp);//fp变成了失效指针
fp = nullptr;
return 0;
}
int LoadData()//读取数据
{
int ar[10] = { 12,23,34,4,5,56,67,78,89,90,100 };
int n = sizeof(ar) / sizeof(ar[0]);
FILE* fp = nullptr;
//fp = fopen("yhp.txt","w");//内核区
errno_t res = fopen_s(&fp, "D:\\yhp.txt", "r");
if (fp == nullptr)
{
printf("fopen file error %d \n", res);
return 1;
}
for (int i = 0; i < n; ++i)
{
//scanf("%d ", &ar[i]);//stdin
//fscanf(stdin, "%d ", &ar[i]);//数据回显到屏幕
fscanf_s(fp, "%d ", &ar[i]);
}
fclose(fp);//fp变成了失效指针
fp = nullptr;
return 0;
}
5.二进制文件
链表的序列化和反序列化
协议
scanf以空格键作为结束
fgets以回车键作为结束