#define _CRT_SECURE_NO_WARNINGS 1
#include
//int main()
//{
// //打开文件
// //相对路径
// FILE* pf = fopen("C:\\Users\\24365\\Desktop\\test1.txt", "w");
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //写文件
//
// //关闭文件
// fclose(pf);
// pf == NULL;
//
// return 0;
//}
fputc 写文件
//int main()
//{
// //打开文件
// FILE* pf = fopen("test.txt", "w");
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //写文件
// //把26个字母写到文件中
// int i = 0;
// for (i = 0; i < 26; i++)
// {
// fputc('a' + i, pf);
// }
// //关闭文件
// fclose(pf);
// pf = NULL;
// return 0;
//}
fgetc - 读文件操作
//
//int main()
//{
// //打开文件
// FILE* pf = fopen("test.txt", "r");
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //读文件
// int ch = 0;
// int i = 0;
// for (i = 0; i < 26; i++)
// {
// ch = fgetc(pf);
// printf("%c ", ch);
// }
// //关闭文件
// fclose(pf);
// pf = NULL;
//
// return 0;
//}
fputs - 写一行数据
//
//
//int main()
//{
// //打开文件
// FILE* pf = fopen("test.txt", "w");
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //写文件
// //写一行数组 hello bit
// fputs("hello world\n", pf);
// fputs("hello bit\n", pf);
// //关闭文件
// fclose(pf);
// pf = NULL;
// return 0;
//}
fgets - 读一行数据
//
//int main()
//{
// //打开文件
// FILE* pf = fopen("test.txt", "r");
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //读取数据
// char arr[20];//从pf拿出来的数据放在arr中
// fgets(arr, 5, pf); // 会提前留一个\0的位置
// printf("%s\n", arr);
// //关闭文件
// fclose(pf);
// pf = NULL;
// return 0;
//}
//格式化的读写
//fprintf
//fscanf
//struct S
//{
// int n;
// float f;
// char arr[20];
//};
//
使用fprintf 来格式化写数据
//int main()
//{
// struct S s = { 100, 3.14f, "zhangsan" };
// //打开文件
// FILE* pf = fopen("test.txt", "w");
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //写文件
// fprintf(pf, "%d %f %s\n", s.n, s.f, s.arr);
// //关闭文件
// fclose(pf);
// pf = NULL;
// return 0;
//}
//使用fscanf来读取数据
struct S
{
int n;
float f;
char arr[20];
};
int main()
{
struct S s = { 0 };
//打开文件
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//读文件
fscanf(pf, "%d %f %s", &(s.n), &(s.f), s.arr); // 要先在文件中写入数据,再读取数据,把pf中的数据放到s中去
printf("%d %f %s\n", s.n, s.f, s.arr);//打印结构体s中的数据
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
stdin FILE* - 基本输入流
stdout FILE* - 基本输出流
stderr FILE* - 基本错误流
//
//int main()
//{
// int ch = 0;
// //ch = fgetc(stdin);
// //printf("%c\n", ch);
//
// //fputc('a', stdout);
// //fputc('b', stdout);
// //fputc('c', stdout);
// //fputc('d', stdout);
//
//
// struct S
// {
// int n;
// float f;
// char arr[20];
// };
//
// //struct S s = { 1000, 3.666f, "hehe" };
// //fprintf(stdout, "%d %f %s", s.n, s.f, s.arr);
//
// struct S s = { 0 };
// fscanf(stdin, "%d %f %s", &(s.n), &(s.f), s.arr);
// fprintf(stdout, "%d %f %s", s.n, s.f, s.arr);
//
// return 0;
//}
sprintf和sscanf的使用
//
// struct S
// {
// int n;
// float f;
// char arr[20];
// };
//
// int main()
// {
// struct S s = { 200, 3.14, "wangwu" };
// //打一个结构体转换为字符串
// char arr[200];
// sprintf(arr, "%d %f %s\n", s.n, s.f, s.arr);
// //printf("字符串的数据:%s\n", arr);
//
// //把一个字符串转换成对应的格式化数据
// //sscanf(arr, "%d %f %s", &(s.n), &(s.f), &s.arr);
// //printf("格式化的数据:%d %f %s\n", s.n, s.f, s.arr);
//
// struct S tmp = { 0 };
// sscanf(arr, "%d %f %s", &(tmp.n), &(tmp.f), &tmp.arr);
// printf("格式化的数据:%d %f %s\n", tmp.n, tmp.f, tmp.arr);
//
// return 0;
// }
//int main()
//{
// //打开文件
// FILE* pf = fopen("C:\\Users\\24365\\Desktop\\test1.txt", "w"); // w - 只写 r - 只读
// if (pf == NULL)
// {
// perror("fopen");
// return 1;
// }
// //读文件
// //关闭文件
// fclose(pf);
// pf = NULL;
// return 0;
//}