所以我创建了一个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覆盖数组时是否必要。谢谢!
答案 0 :(得分:0)
你不应该担心会被覆盖的东西。您应该(始终)担心在使用值之前初始化它。因为否则它是未定义的行为。
更重要的是,您应该始终检查在内存上运行的函数的返回值。你永远不能指望"那将起作用"。因为一段时间后你会突然得到 Segmentation Fault ,并且不知道如何修复它。
如果您不知道如何:
int check;
check = fscanf(query, "%s", command);
if(check == EOF)
perror("fscanf");