gpt4 book ai didi

c - 为什么这个 If 语句不执行代码?

转载 作者:行者123 更新时间:2023-11-30 21:46:10 27 4
gpt4 key购买 nike

我已经检查了所有语法。

#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 语言的初学者。

最佳答案

您做了char * 响应。这使得指针变量指向一个字符。现在它没有指向任何内存(它是一些垃圾值)。 scanf 将用户输入存储在从 response 指向的地址开始的连续内存地址中。由于 response 未初始化,输入可能不一定存储在堆栈上(不希望这样)。

现在,当您response==“Dice”时,它根本没有任何意义。

<小时/>

关于数组和指针的一些非常基本的内容及其比较。

int arr[10];

现在arr指向数组的第一个成员,arr+1指向第二个成员,arr+2指向第三个成员,依此类推。 arr[i]*(arr+i) 的简写方式。

<小时/>

字符串也是一个字符数组。

char *str1="Hello";
char *str2="Hello";
if(str1==str2){...}

这里第三行的 if 语句的作用是与指针进行比较,即检查它们是否都指向同一位置。由于这不是真的,因此执行不会进入 if block 。您要做的就是逐个字符地比较字符串。 string.h 中有一个名为 strcmp() 的内置函数可以执行此操作。

关于c - 为什么这个 If 语句不执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com