c - 循环内的 fscanf

标签 c scanf

啊,谢谢!说得通。刚刚发出了大小为 MAX_COMMAND_LENGTH + 1 的命令。

我正在尝试使用 fscanf 在一个循环中两次不同地读取同一个文件,但我遇到了段错误。这个想法是文件将被格式化,以便它在每行的开头都有一个命令,后面是命令的参数。

  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);
    }
}

最佳答案

您需要为命令 分配内存。例如:

command = (char *)malloc(1024 * sizeof(char));

将为 1024 个字符分配足够的内存。

记得在完成后free(command)

关于c - 循环内的 fscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5413756/

相关文章:

C、指针、字符串

c - 为什么这个 fscanf() 在使用大文件时会出现段错误?

c - 读取 C 中的整数,直到按下 ENTER 键

c++ - 在 C/C++ 中按递增值对二维数组进行排序;知道排序后的原始位置?

在c中调用函数int strrindex(char s[], char t[])而不传递size参数

c - 如何在C中创建一组随机数

c - 如何从包含整数和字符串的文本文件中使用 fscanf 和 fgets?

c - C/阅读中的前瞻

c - 如何从C字符串中获取第一个字母?

c - ` int a = 2; int b = a;` 报告意外错误