ferror.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:1k
源码类别:

数学计算

开发平台:

Visual C++

  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # define TAB_NUM 8    /* 定义应换的空格数 */
  4. # define IN 0
  5. # define OUT 1
  6. void error(int e)
  7. {
  8. if(e == IN)
  9. printf("输入错误。n");
  10. else
  11. printf("输出错误。n");
  12. exit(1);    /* 跳出程序 */
  13. }
  14. /* 为使用该程序,应该指定命令行中的输入和输出出文件名 */
  15. void main(int argc, char *argv[])   
  16. {
  17. FILE *in, *out;
  18. int tab, i;
  19. char ch;
  20. if(argc != 3)
  21. {
  22. printf("用法出错。n");
  23. exit(1);
  24. }
  25. if((out=fopen(argv[1], "wb"))==NULL)
  26. {
  27. printf("不能打开输入文件%s。n", argv[1]);
  28. exit(1);
  29. }
  30. if((out=fopen(argv[2], "wb"))==NULL)
  31. {
  32. printf("不能打开输出文件%s。n", argv[2]);
  33. exit(1);
  34. }
  35. tab = 0;
  36. do{
  37. ch = getc(in);
  38. if(ferror(in))
  39. error(IN);
  40. /* 如果发现制表符,则输出相同数目的空格符 */
  41. if(ch == 't')
  42. {
  43. for(i=tab; i<8; i++)
  44. {
  45. putc(' ', out);
  46. if(ferror(out))
  47. error(OUT);
  48. }
  49. tab = 0;
  50. }
  51. else
  52. {
  53. putc(ch, out);
  54. if(ferror(out))
  55. error(OUT);
  56. tab++;
  57. if(tab==TAB_NUM)
  58. tab = 0;
  59. if(ch=='n'||ch=='r')
  60. tab = 0;
  61. }
  62. } while(!feof(in));
  63. fclose(in);
  64. fclose(out);
  65. }