C语言习题5.26--文件操作3

Description

文本文件score.dic 中存储了n名学生的信息(班级编号,姓名,成绩),每个学生信息占一行,每行的数据之间使用制表符分割,如下所示:
145811  fuxin 100
145811  chengxian 90
145812  zhangxue 92
145812  lijun 88
……
将文本文件score.dic中的制表符替换成等价个数的空格,使空格充满到下一个制表符终止位的地方,将结果输出。假设制表符终止位的位置固定,每隔8列出现一个制表符终止位。
#include
#include
#define TABSIZE 8   /
* 制表符宽度 */
int main()
{
    int num;        /
* 空格计数 */
    int i;          /
* 循环变量 */
    char ch;        /
* 当前读入字符 */
    FILE *fin;      /
* 输入文件 */
    fin=fopen("score.dic","r");     /
* 打开输入文件读 */
    if(!fin)     /
* 文件打开失败 */
    {
        fprintf(stderr,"error open file!\n");       /
* 输出错误信息到标准错误设备 */
        exit(-1);       /
* 强制退出,并返回错误码 */
    }
/ *************/
        /
* 初始化计数 */
       /
* 遍历输入文件的每一个字符 */
       
/ * 制表符 */
       /
* 补足空格 */
       /
* 重新计数 */
        /
* 其它字符原样输出 */
        /
* 新的一行,重新计数 */
       
/* 下一个终止位,重新计数 */
        /
* 关闭输入文件*/
/ *************
      return 0;
}
主程序已给出,请补充缺失并提交该部分。

Input

n名学生的信息(班级编号,姓名,成绩)

Output

  处理后的学生数据

Sample Input


Sample Output

145811  fuxin           100
145811  chengxian       90
145812  zhangxue        92
145812  lijun           88


  1. #include
  2. #include
  3. #define TABSIZE 8   /* 制表符宽度 */
  4. int main()
  5. {
  6.     int num;        /* 空格计数 */
  7.     int i;          /* 循环变量 */
  8.     char ch;        /* 当前读入字符 */
  9.     FILE *fin;      /* 输入文件 */
  10.     fin=fopen("score.dic","r");     /* 打开输入文件读 */
  11.     if(!fin)     /* 文件打开失败 */
  12.     {
  13.         fprintf(stderr,"error open file!\n");       /* 输出错误信息到标准错误设备 */
  14.         exit(-1);       /* 强制退出,并返回错误码 */
  15.     }
  16.     num=0;
  17.     int a=0;
  18.         while(fscanf(fin,"%c",&ch)!=EOF)
  19. {
  20.   
  21.     if(ch=='\t')
  22.     {
  23.         for(i=1;i<=TABSIZE-num;i++)
  24.         {
  25.             printf(" ");
  26.         }
  27.         num=0;
  28.         a=0;
  29.     }
  30.       else
  31.     {
  32.         num++;
  33.         printf("%c",ch);
  34.         if(ch>='a'&&ch<='z') a=1;
  35.     }
  36.     if(num==8||ch=='\r'||ch=='\n') num=0;
  37. }
  38.     fclose(fin);
  39. return 0;
  40. }

你可能感兴趣的:(计153-12和计155—7)