c - 尝试从 C 文本文件中读取信息

标签 c file input io

我正在尝试读取以下文本文件:

参数.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);

在您的代码中,strTempschedulememAlloc 只是一个指向 char 的指针。但是,要保存字符串,您需要一 block 内存,因此您必须为指针分配一些内存。

顺便说一句,如果我是你,我会写 fscanf(parameters, "%*[^:] :%d", &memorize); 以避免不必要地使用 strTemp.

关于c - 尝试从 C 文本文件中读取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392230/

相关文章:

c - C 中同一主机和端口上的多播监听

C++ 文件 readInt 函数? (来自二进制文件)

c++ - "Incomplete type"- 尝试打开 ifstream 时出错

c - 可滚动位图 win32 可能吗?

c - 排序 :multi-character tab in C error

c++ - C++中二进制模式的长度指示器

c# - 如何更改 .NET WebClient 对象的超时

jQuery 不适用于动态创建的输入字段

linux - Linux用户态输入输出

c - 地址 0x0 中的 0xdeadbeef 是什么意思?