当前位置:   article > 正文

学习笔记第十九天

学习笔记第十九天

1.标准I/O的基本概念

        标准输入(stdin):默认是指键盘输入

        标准输出(stdout):默认是指显示器输出。

        标准错误(stderr):用于输出错误信息,也是指向显示器,但与stdout不同,stderr通常是无缓冲的,以确保错误信息能立即显示。

2.标准I/O函数

标准I/O库提供了一系列函数来打开、读写和关闭文件。这些函数包括:

        打开文件:FILE *fopen(const char *path, const char *mode);

        关闭文件:int fclose(FILE *stream);

        字符读写:int fgetc(FILE *stream);

       int fputc(int char, FILE *stream);

        行读写:char *fgets(char *str, int n, FILE *stream);

      int fputs(const char *str, FILE *stream);

        块读写:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

    size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

3.缓冲机制

标准I/O库使用缓冲机制来提高效率。缓冲分为三种类型:

        全缓冲:对于文件操作,通常使用全缓冲。当缓冲区满、文件关闭或显式调用fflush时,缓

冲区内容才会被写入文件。

        行缓冲:对于标准输出(stdout)和某些特殊文件(如终端),使用行缓冲。当遇到换行符、

缓冲区满、文件关闭或显式调用fflush时,缓冲区内容会被刷新。        

        无缓冲:标准错误(stderr)通常是无缓冲的,以确保错误信息能立即显示。

4.文件操作的步骤

        打开文件:使用fopen函数打开文件,并返回一个FILE指针。

        读写文件:使用标准I/O库提供的函数进行读写操作。

        关闭文件:使用fclose函数关闭文件,并释放相关资源

5.文件打开模式

        r:只读模式。文件必须存在,否则报错。

        r+:读写模式。文件必须存在,否则报错。

        w:只写模式。文件不存在则创建,存在则清空内容。

        w+:写读模式。文件不存在则创建,存在则清空内容。

        a:追加模式。文件不存在则创建,存在则在文件末尾追加。

        a+:追加读写模式。文件不存在则创建,存在则在文件末尾追加,同时允许读取。

6.示例

  1. while(1)
  2. {
  3. fputc(fgetc(stdin), stdout);
  4. }

        使用EOF宏判断,但需注意EOF在C语言中通常定义为-1,但实际读取时不会直接返回-1,而

是到达文件末尾时返回EOF。

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4. FILE* src = fopen("1.txt","r");
  5. FILE* dst = fopen("2.txt","w");
  6. if(NULL == src||NULL ==dst)
  7. {
  8. printf("error1!");
  9. return 1;
  10. }
  11. while(1)
  12. {
  13. int c = fgetc(src);
  14. if(EOF == c)
  15. {
  16. break;
  17. }
  18. fputc(c,dst);
  19. }
  20. fclose(src);
  21. fclose(dst);
  22. return 0;
  23. }
  1. #include<stdio.h>
  2. #include<string.h>
  3. int main(int argc,char *argv[])
  4. {
  5. if(argc<3)
  6. {
  7. printf("error1!\n");
  8. return 1;
  9. }
  10. FILE* src = fopen(argv[1],"r");
  11. FILE* dst = fopen(argv[2],"w");
  12. if(NULL == src)
  13. {
  14. printf("error1!\n");
  15. return 1;
  16. }
  17. char buf[4096]= {0};
  18. while(1)
  19. {
  20. memset(buf,0,sizeof(buf));
  21. if(fgets(buf,sizeof(buf),src))
  22. {
  23. int a = fputs(buf,dst);
  24. if(a == EOF)
  25. {
  26. printf("error2!\n");
  27. return 1;
  28. }
  29. }
  30. else
  31. {
  32. break;
  33. }
  34. }
  35. fclose(src);
  36. fclose(dst);
  37. return 0;
  38. }
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int main(int argc,char *argv[])
  5. {
  6. if(argc<3)
  7. {
  8. printf("error!\n");
  9. return 1;
  10. }
  11. FILE* src = fopen(argv[1],"r");
  12. FILE* dst = fopen(argv[2],"w");
  13. if(NULL == src||dst == NULL)
  14. {
  15. printf("error1!\n");
  16. return 1;
  17. }
  18. char buf[2]= {0};
  19. while(1)
  20. {
  21. bzero(buf,sizeof(buf));
  22. if(fread(buf,sizeof(buf),1,src))
  23. {
  24. int a = fwrite(buf,sizeof(buf),1,dst);
  25. if(a == EOF)
  26. {
  27. printf("error2!\n");
  28. return 1;
  29. }
  30. }
  31. else
  32. {
  33. break;
  34. }
  35. }
  36. fclose(src);
  37. fclose(dst);
  38. return 0;
  39. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/964915
推荐阅读
相关标签
  

闽ICP备14008679号