fscanf读取多个字符串

时间:2016-03-31 21:43:34

标签: c scanf

所以我创建了一个c程序,它读取一个充满了在表上执行的命令的查询文件。所以我用过:

char command[100];
while(1)
{
    fscanf(query, "%s", command);
    x=strcmp(command, "select");
    //continue with checking for other commands etc.
    //if the command is stop then the loop breaks
}

我的问题是,当我第一次调用fscanf时,我知道它会将命令保存到命令数组中。但是我应该将字符串"清空"或null作为更好的方式来放置它?我不确定在使用strcmp时是否有必要,或者通常使用fscanf覆盖数组时是否必要。谢谢!

1 个答案:

答案 0 :(得分:0)

你不应该担心会被覆盖的东西。您应该(始终)担心在使用之前初始化它。因为否则它是未定义的行为。

更重要的是,您应该始终检查在内存上运行的函数的返回值。你永远不能指望"那将起作用"。因为一段时间后你会突然得到 Segmentation Fault ,并且不知道如何修复它。

如果您不知道如何:

int check;

check = fscanf(query, "%s", command);
if(check == EOF)
    perror("fscanf");