啊,谢谢!说得通。刚刚制作了大小为MAX_COMMAND_LENGTH + 1的命令。
我正在尝试使用fscanf在循环中读取同一个文件2次,但我遇到了一个seg错误。这个想法是文件将被格式化,以便它在每行的开头有一个命令,后跟命令的参数。
char* command; //Changed to char command[MAX_COMMAND_LENGTH + 1]
while(fscanf(file, "%s", command) == 1)
{
if (strcmp("CMD1", command) == 0)
{
int index, exp, coeff;
fscanf(file, "%d %d %d", &index, &exp, &coeff);
}
else if (strcmp("CMD2", command) == 0)
{
int num;
fscanf(file, "%d", &num);
}
}
答案 0 :(得分:3)
您需要为command
分配内存。例如:
command = (char *)malloc(1024 * sizeof(char));
将为1024个字符分配足够的内存。
完成后请记住free(command)
。
答案 1 :(得分:0)
您需要分配一些存储空间并将其存储在“命令”中。你要求fscanf写一个未初始化的指针。
答案 2 :(得分:0)
现在你只有一个指针。您需要分配一些空间来容纳您读取的字符串:
char command[256];
if (fscanf(file "%256s", command)==1)
// ...
答案 3 :(得分:0)
您应该分配一个缓冲区来读取命令。目前command
未初始化,并且它指向无效地址。所以要么“malloc()”内存用于命令,要么声明命令作为数组(char command[whateversizeyouneed]
)