从特定格式的文本文件中读取

时间:2015-02-13 06:36:41

标签: c text-files filestream

我试图按此顺序从文件中读取:0 0 4(100)12(67)2

这对应于:

进程ID,arrival_time,1st_CPU_burst,(1st_IO_burst),2nd_CPU_burst,(2nd_IO_burst)

这与操作系统基础知识有关我试图用队列执行fcfs调度但在我这样做之前我必须正确读取。

在我的代码中,我试图只读取带括号的数字并打印相同的输入,如(200),但它不起作用,因为它不识别括号。这是出于调试目的,但我将遵循上述格式。

代码:

#include <stdio.h>
#include <string.h>


int main(int argc, char** argv)
{
    char input;
    char b1;
    char b2;
    FILE *f = fopen("CPULoad.dat", "r");

     while(fscanf(f, "%s%s%s", &b1, &input, &b2) == 1)
     {


        printf("%s%s%s", &b1, &input, &b2);

      }
 return 0; 
}

2 个答案:

答案 0 :(得分:0)

IMO,最好的方法是

  1. 使用fgets()
  2. 从文件中读取整行
  3. 使用"()"作为分隔符对输入进行标记。
  4. 检查令牌是否为非NULL。
  5. 使用strtol() [或系列]将令牌转换为intlong int
  6. 请注意;在使用返回的指针之前,请务必检查fopen()是否成功。

答案 1 :(得分:0)

据我了解,您需要从文件中读取7个数字,因此您的fscanf应如下所示

fscanf(f, "%d %d %d (%d) %d (%d) %d", &process_id, &arrival_time, &_1st_CPU_burst, &_1st_IO_burst, &_2nd_CPU_burst, &_2nd_IO_burst, &other) == 7

如果fscanf返回7,则读取所有数字,并且可以处理。