gpt4 book ai didi

C从文本文件中读取值

转载 作者:行者123 更新时间:2023-11-30 20:53:42 26 4
gpt4 key购买 nike

我正在编写一个c程序来模拟FCFS调度算法。它将接受命令行参数作为文件,并计算每个进程的周转时间和等待时间。但是,它无法成功地将文本文件中的值读取到变量中。这是代码

#include <stdio.h>
#define N 50

int main(int argc, char** argv)
{
int i = 0;
char line[20];
int n=0;
typedef struct
{
char name; //process name
int at; //arrive time
int pt; //process time
int ft; //finish time
int rt; //round time
int wt; //wait time
} Process;
Process pcs[N];

FILE* file = fopen( argv[1], "r");
while (fgets(line,sizeof(line),file) != NULL)
{
sscanf(line, "%s %d %d", pcs[i].name, pcs[i].at, pcs[i].pt);
line[strlen(line)-1] = '\0';
printf("%s %d %d\n",pcs[i].name, pcs[i].at, pcs[i].pt);
i++;
}
fclose(file);
pcs[0].ft=pcs[0].at+pcs[0].pt;
pcs[0].rt=pcs[0].ft-pcs[0].at;
pcs[0].wt=0;
for (n;n<4;n++)
{
if (pcs[n].at<pcs[n-1].ft)
{
pcs[n].ft=pcs[n-1].ft+pcs[n].pt;
pcs[n].rt=pcs[n].ft-pcs[n].at;
pcs[n].wt=pcs[n-1].ft-pcs[n].at;
}
else
{
pcs[n].ft=pcs[n].at+pcs[n].pt;
pcs[n].rt=pcs[n].ft-pcs[n].at;
pcs[n].wt=pcs[n-1].ft-pcs[n].at;
}
}
int x = 0;
for (x;x<n;x++)
{
printf("process name: %s", pcs[x].name);
printf("Turnaround Time: %d", pcs[x].rt);
printf("Wait Time: %d\n", pcs[x].wt);
}
return(0);
}

这是输入文件

input

输出是

output

感谢您的帮助和建议。

最佳答案

正如 alk 所指出的,你犯了一些错误:

  1. 在结构声明中,您已将 name 声明为单个字符,但在读取代码的文件中(包含 fgets 的 while 循环),您传递 % s 用于字符串,因此最好将声明更改为 char name[SIZE] 而不是 char name。顺便说一句,您应该阅读编译器警告并尝试理解它,因为这就是造成问题的原因。
  2. 您应该传递 sscanf 及其变体中的变量地址,因此将第 26 行更改为:sscanf(line, "%s %d %d", pcs[i].name, &pcs[i].at, &pcs[i].pt);

关于C从文本文件中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com