【发布时间】:2019-04-27 10:48:37
【问题描述】:
基本上,我想创建一个程序,其中包含可能出现在我即将进行的数字系统考试中的潜在问题。
#include <stdio.h>
#include <string.h>
int main() {
char input1[600];
printf("What is the set of available registers?");
scanf("%s", &input1);
if(strcmp(input1, "registers, memory, hard disc") == 0){
printf("Good job! You got it right");
}
else {
printf("Wrong answer!");
}
所以每当我被问及输入“寄存器、内存、硬盘”时,它都会返回 1 而不是 0。我看不到问题所在。如果这是一个愚蠢的问题,我对 C 有点陌生,很抱歉。
【问题讨论】:
-
在这种情况下,您应该打印您已阅读的字符串以查看其中包含的内容。这是基本的调试。
-
scanf著名(是的;这是设计使然)分隔空间上的输入。 -
“标准库函数 X 的行为不符合其文档”几乎总是误诊。更有可能的是输入不是您认为的那样(如这里),甚至您误解了文档。
-
调用了未定义的行为,因为
%s需要char*,但显示的代码传递了char**。任何事情都有可能发生。
标签: c string string-comparison strcmp