循环中的fscanf

时间:2011-03-24 01:33:08

标签: c scanf

啊,谢谢!说得通。刚刚制作了大小为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);
    }
}

4 个答案:

答案 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]