我检查了所有语法。
#include <stdlib.h>
#include <stdio.h>
int main(){
char * response;
int anger = 0;
int correct = 0;
printf("type Dice");
scanf("%s", response);
if (response == "Dice"){
printf("Good Job!");
correct = 1;
}
}
我试图创建一个响应生成器并且is语句不起作用。我尝试将变量响应设置为正确的答案,并且if语句有效,所以我想我的scanf可能有问题。我是C的初学者。
答案 0 :(得分:1)
您无法使用==来比较字符串。请改用strcmp()。如果它返回0,则它们相同。
if (strcmp(response,"Dice")==0){
...
}
答案 1 :(得分:1)
你做过char * response
。这使得指针变量为一个字符。现在它没有指向任何内存(这是一些垃圾值)。 scanf
将用户输入存储在从response
指向的连续内存地址中。由于response
未初始化,输入可能不一定存储在堆栈中(不要那样)。
现在当你做response=="Dice"
时,它根本不是什么意思。
关于数组和指针的一些非常基本的东西以及它们的比较。
int arr[10];
现在arr
指向数组的第一个成员,arr+1
指向第二个,arr+2
指向第三个,依此类推。 arr[i]
是说*(arr+i)
的简写方式。
String也是一个字符数组。
char *str1="Hello";
char *str2="Hello";
if(str1==str2){...}
第三行中if语句的作用是,它与指针进行比较,即它检查它们是否都指向同一位置。由于这不是真的,执行不会进入if块。你想要做的是逐个字符地比较字符串。 string.h
中有一个名为strcmp()
的内置函数可以做到这一点。