我正在尝试读取以下文本文件:
参数.txt:
Memory Size: 8000
Number Cores: 1
Quantum: 100
Schedule Algorithm: FCFS
Memory Allocation: First
Swap Time: OFF
Thread Quantum: OFF
并将每个值保存为变量(8000、1、100、“FCFS”、“First”、“OFF”、“OFF”)。我首先读取 memSize (8000) 的值。
我有以下 C 代码:
FILE *parameters;
parameters=(fopen("./Parameters.txt","r"));
if(parameters==NULL){
printf("Error reading file.");
exit(1);
}
char * strTemp;
int memSize, numCores, quantum, swapTime;
char * schedAlg, memAlloc;
fscanf(parameters, "%s %s %d", strTemp, strTemp, memSize);
但是,我从中遇到了段错误。我已经调试了代码以将段错误范围缩小到 fscanf() 行。
尝试读取此文件时我是否使事情变得过于复杂?
最佳答案
FILE *parameters;
parameters=(fopen("./Parameters.txt","r"));
if(parameters==NULL){
printf("Error reading file.");
exit(1);
}
char *strTemp = malloc(80);
int memSize, numCores, quantum, swapTime;
char *schedule = malloc(80), memAlloc = malloc(80);
fscanf(parameters, "%s %s %d", strTemp, strTemp, &memorize);
在您的代码中,strTemp
、schedule
和 memAlloc
只是一个指向 char 的指针。但是,要保存字符串,您需要一 block 内存,因此您必须为指针分配一些内存。
顺便说一句,如果我是你,我会写 fscanf(parameters, "%*[^:] :%d", &memorize);
以避免不必要地使用 strTemp
.
关于c - 尝试从 C 文本文件中读取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392230/