【发布时间】:2018-02-27 17:22:24
【问题描述】:
我在做什么 -
我正在尝试读取包含进程信息的文件并创建 3 个不同的数组。一个是数组名称,第二个是到达时间,第三个是处理时间,然后计算。进程数不固定,但出于测试目的,我将其保留为 4 个进程。
第一行 printf 输出我想要的。数组形式的文件内容。
void readFile() {
int i = 0;
char printLine[10];
char *processName[4];
char *arrivalTime[4];
char *processTime[4];
FILE *processFile = fopen("processes.txt", "r");
while(!feof(processFile)){
fgets(printLine, 10, processFile); // get the line
processName[i] = strtok(printLine, " ");
arrivalTime[i] = strtok(NULL, " ");
processTime[i] = strtok(NULL, "");
printf("%s %s %s\n", processName[i], arrivalTime[i], processTime[i]);
i++;
}
printf("----\n%s %s %s\n", processName[0], arrivalTime[0], processTime[0]);
}
错误 - 错误(有点)是第二个打印行的输出给了我最后一个进程信息,即使我正在打印第一个元素(第一个进程)信息。因此,不是打印第一个元素,而是打印最后一个元素。
processes.txt 文件如下所示
P1 0 3
P2 1 6
P3 4 4
P4 6 2
附言 此文件的格式将被修复,因此没有问题。
我是这方面的真正新手。请原谅我的愚蠢。
编辑 - 我的输出
【问题讨论】:
-
你能分享你的输出吗?
-
您正在保存 same buffer 部分的地址。你需要复印一份。喜欢
processName[i] = strdup(strtok(printLine, " ")); -
已编辑。包含的输出消息
-
感谢@BLUEPIXY 成功了:D
标签: c