我试图按此顺序从文件中读取: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;
}
答案 0 :(得分:0)
IMO,最好的方法是
fgets()
"()"
作为分隔符对输入进行标记。strtol()
[或系列]将令牌转换为int
或long int
。请注意;在使用返回的指针之前,请务必检查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,则读取所有数字,并且可以处理。