为什么我不能在C中突破这个循环?
char command[1];
scanf("%s", command);
while(1){
scanf("%s", command);
if(command == "q")
break;
}
答案 0 :(得分:1)
根据您尝试执行的操作,您可能希望扫描格式为{
"description": "Watch webNavigation events and block matching URLs",
"manifest_version": 2,
"name": "webNavigation based block navigation to matched URLs",
"version": "0.1",
"permissions": [
"notifications",
"webNavigation",
"tabs"
],
"background": {
"scripts": ["blockNavigation.js"]
}
}
而不是%c
。这将为您提供一个字符。然后你可以比较" q"像这样:%s
。
但您可能想要接受多字符命令,在这种情况下,strcmp和更长的缓冲区就是您想要的。
答案 1 :(得分:0)
'command'是一个变量,它包含堆段中某处的内存块地址,而“q”被编译器替换为文本段中内存块的地址,其中保留所有常量字符串。这意味着'=='运算符比较进程内存的不同段中的两个地址。因此它永远不会是真的。 您必须使用strcmp或strncmp函数来比较字符串而不是这些字符串的地址。