分享

C中fread()函数的建议使用方法

 iamlijin 2019-09-05

环境:Vmware Workstation;CentOS-6.4-x86_64

说明:

在使用fread函数的时候,最好使用下面的形式:fread(buf, sizeof(char), sizeof(buf), p);

单个字节读取,每次读取缓冲区的长度,这样就不会出现有些字节被舍弃的情况了。

程序步骤:

1、创建并编写源文件main.c:

  1. #include <stdio.h>
  2. #include <errno.h>
  3. #include <string.h>
  4. int main(int argc, char *args[])
  5. {
  6. // 创建文件指针,以只读的方式打开文件
  7. FILE *p = fopen("a.txt", "r");
  8. // 判断打开文件是否成功
  9. if (p == NULL)
  10. {
  11. printf("Message : %s\n", strerror(errno));
  12. return -1;
  13. }
  14. // 定义读取文件的缓冲区
  15. char buf[1024];
  16. // 循环读取文件
  17. while (1)
  18. {
  19. // 清空缓冲区
  20. memset(buf, 0, sizeof(buf));
  21. // 定义函数返回值
  22. int rc = fread(buf, sizeof(char), sizeof(buf), p);
  23. // 读取到文件的结束,退出循环
  24. if (rc <= 0)
  25. break;
  26. // 输出读取的结果到屏幕
  27. printf("%s\n", buf);
  28. }
  29. // 关闭文件
  30. fclose(p);
  31. return 0;
  32. }

2、创建并编写源文件makefile:

  1. .SUFFIXES:.c .o
  2. CC=gcc
  3. SRCS=main.c
  4. OBJS=$(SRCS:.c=.o)
  5. EXEC=main
  6. start: $(OBJS)
  7. $(CC) -o $(EXEC) $(OBJS)
  8. @echo "-----------------------------OK-----------------------"
  9. .c.o:
  10. $(CC) -Wall -o $@ -c $<
  11. clean:
  12. rm -rf $(EXEC) $(OBJS)

3、创建并编写所使用到的文件a.txt:

12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

4、执行程序,查看结果:

  1. [negivup@negivup mycode]$ make
  2. gcc -Wall -o main.o -c main.c
  3. gcc -o main main.o
  4. -----------------------------OK-----------------------
  5. [negivup@negivup mycode]$ ./main
  6. 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789


PS:根据传智播客视频学习整理得出。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多