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

Reading from a textfile in a certain format

我试图按以下顺序从文件中读取: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; 
}

IMO,最好的方法是

  1. 使用 fgets()
  2. 从文件中读取整行
  3. 使用 "()" 作为分隔符对输入进行标记。
  4. 检查令牌是否为非 NULL。
  5. 使用strtol()[或family]将令牌转换为intlong int

注意;在使用返回的指针之前,始终检查 fopen() 是否成功。

据我所知,您需要从文件中读取 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

if fscanf returns 7 所有数字都读完了,可以处理了。