VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 227|回复: 0

[交流] c语言学习之路的点滴记录——文件的字符读和写基本操作

[复制链接]
13_avatar_middle
最佳答案
1 
在线会员 发表于 2021-8-24 09:15:14 | 显示全部楼层 |阅读模式
本帖最后由 小白学编程 于 2021-8-24 11:04 编辑

  1. void test01()
  2. {
  3.         //写文件 fputc
  4.         FILE* f_write = fopen("./test1.txt", "w");
  5.         if (f_write == NULL)
  6.         {

  7.               //error宏
  8.                 //printf("文件加载失败!\n");
  9.                 perror("文件加载失败!");
  10.                 return;
  11.         }
  12.         char buf[] = "hello worid";
  13.         for (int i = 0; i < strlen(buf); i++)
  14.         {
  15.                 fputc(buf[i], f_write);
  16.         }
  17.         fclose(f_write);

  18.         //读文件  fgetc
  19.         FILE* f_read = fopen("./test1.txt", "r");
  20.         if (f_read == NULL)
  21.         {
  22.                 return;
  23.         }
  24.         char ch;
  25.         while ((ch= fgetc(f_read)) != EOF) //EOF END OF FILE 文件的结尾
  26.         {
  27.                 printf("%c", ch);
  28.         }
  29.         fclose(f_read);
  30. }


  31. int main(void)
  32. {
  33.         test01();
  34.         return EXIT_SUCCESS;
  35. }
复制代码


文件操作 按行读写
  1. void test02()
  2. {
  3. //写文件
  4. FILE* f_write = fopen("./test2.txt", "w+");
  5. if (f_write == NULL)
  6. {
  7.   return;
  8. }
  9. char* buf[] =
  10. {
  11.   "飞流直下三千尺",
  12.   "看见烤鸭流口水",
  13.   "一摸口袋没带钱",

  14. };
  15. for (int i = 0; i < 3; i++)
  16. {
  17.   fputs(buf[i], f_write);
  18. }
  19. fclose(f_write);

  20. //读文件
  21. FILE* f_read = fopen("./test2.txt", "r");
  22. if (f_read == NULL)
  23. {
  24.   return;
  25. }
  26. while (!feof(f_read))
  27. {
  28.   char temp[1024] = { 0 };
  29.   fgets(temp, 1024, f_read);
  30.   printf("%s",temp);
  31. }
  32. fclose(f_read);
  33. }


  34. int main(void)
  35. {
  36. test02();
  37. return EXIT_SUCCESS;
  38. }
复制代码


文件操作--按块读写
  1. struct Hero
  2. {
  3.         char name[64];
  4.         int age;
  5. };

  6. void test01()
  7. {
  8.         //写文件
  9.         FILE* f_wirte = fopen("./test3.txt", "wb");
  10.         if (f_wirte == NULL)
  11.         {
  12.                 return;
  13.         }
  14.         struct Hero heros[] =
  15.         {
  16.                 {"孙悟空",999},
  17.                 {"鲁班",10},
  18.                 {"曹操",20},
  19.                 {"程咬金",30},
  20.                 {"貂蝉",40},
  21.                 {"赵云",50},
  22.                 {"妲己",60},
  23.         };
  24.         for (int i = 0; i < 7; i++)
  25.         {
  26.                 //参数1 数据地址 参数2 块大小 参数3 块个数 参数4 文件指针
  27.                 fwrite(&heros[i], sizeof(struct Hero), 1, f_wirte);
  28.         }
  29.         fclose(f_wirte);

  30.         //读文件
  31.         FILE* f_read = fopen("./test3.txt", "rb");
  32.         if (f_read == NULL)
  33.         {
  34.                 return;
  35.         }
  36.         struct Hero temp[7];
  37.         fread(&temp, sizeof(struct Hero), 7, f_read);
  38.         for (int i = 0; i < 7; i++)
  39.         {
  40.                 printf("姓名%s:年龄:%d\n",temp[i].name,temp[i].age);
  41.         }
  42.         fclose(f_read);
  43. }
  44. int main(void)
  45. {
  46.         test01();
  47.         return EXIT_SUCCESS;
  48. }
复制代码


文件操作--按格式化读写
  1. void test01()

  2. {
  3.         //格式化读写
  4.         //写文件
  5.         FILE* f_write = fopen("./test4.txt", "w");
  6.         if (f_write == NULL)
  7.         {
  8.                 return;
  9.         }
  10.         fprintf(f_write, "hello worid %s", "abcdof");
  11.         fclose(f_write);

  12.         //读文件
  13.         FILE* f_read = fopen("./test4.txt", "r");
  14.         if (f_read == NULL)
  15.         {
  16.                 return;
  17.         }
  18.         char temp[1024] = { 0 };
  19.         while (!feof(f_read))
  20.         {
  21.                 fscanf(f_read, "%s", temp);
  22.                 printf("%s \n", temp);
  23.         }
  24.         fclose(f_read);
  25. }

  26. int main(void)
  27. {
  28.         test01();
  29.         return EXIT_SUCCESS;
  30. }
复制代码


文件操作--随机位置读写
  1. //写文件
  2. struct Hero
  3. {
  4.         char name[64];
  5.         int age;
  6. };

  7. void test01()
  8. {
  9.         //写文件
  10.         FILE* f_wirte = fopen("./test5.txt", "wb");
  11.         if (f_wirte == NULL)
  12.         {
  13.                 return;
  14.         }
  15.         struct Hero heros[] =
  16.         {
  17.          {"孙悟空",999},
  18.          {"鲁班",10},
  19.          {"曹操",20},
  20.          {"程咬金",30},
  21.          {"貂蝉",40},
  22.          {"赵云",50},
  23.          {"妲己",60},
  24.         };
  25.         for (int i = 0; i < 7; i++)
  26.         {
  27.                 //参数1 数据地址 参数2 块大小 参数3 块个数 参数4 文件指针
  28.                 fwrite(&heros[i], sizeof(struct Hero), 1, f_wirte);
  29.         }
  30.         fclose(f_wirte);

  31.         //读文件
  32.         FILE* f_read = fopen("./test5.txt", "rb");
  33.         if (f_read == NULL)
  34.         {
  35.                 return;
  36.         }
  37.         struct Hero tempHero;
  38.         //移动光标
  39.         //参数1 文件指针 参数2 移动大小 参数3 起始位置
  40.         //seek_set 从开始 seek_end 从结尾 seek_cur从当前位置
  41.         fseek(f_read, sizeof(struct Hero) * 2, SEEK_SET);
  42.         //从结尾EK_END开始读取数据   -(long)强转才可以
  43.         fseek(f_read, -(long)sizeof(struct Hero) * 2, SEEK_END);
  44.          rewind(f_read); //将文件光标置首

  45.         fread(&tempHero, sizeof(struct Hero), 1, f_read);
  46.         printf("姓名: %s 年龄: %d \n", tempHero.name, tempHero.age);
  47.         fclose(f_read);
  48. }
  49. int main(void)
  50. {
  51.         test01();
  52.         return EXIT_SUCCESS;
  53. }
复制代码


r        打开一个已有的文本文件,允许读取文件。
w        打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
a        打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+        打开一个文本文件,允许读写文件。
w+        打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+        打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。
如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

关闭文件   请使用 fclose( ) 函数




上一篇:c语言学习之路的点滴记录--结构体的基本使用
下一篇:c学习之路的点滴记录——静态与动态链表
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-9-27 06:23

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表