c - 我用scanf获取输入,我用printf检查输入....然后我去用的时候输入不正确

标签 c pointers memory char printf

如果我使用 scanf("%c",&variableName) 方法将某个字符保存到内存中,它会正确保存,我可以使用 printf("%c “,变量名称)。我的问题是在执行 if 语句时我不知道如何正确访问这段数据。

没有进一步的告别,这是我的小测试程序:

#include <stdio.h>

int main()
{
    char *character;

    printf("Please enter a character: ");
    scanf("%c",&character);
    printf("\nYou entered %c",character);

    if (character == 'a')
        printf("Yay!");
    else
        printf("Noo!");
}

如果我在提示时输入字符“a”,我的程序将打印出“You entered a” 这让我相信我做对了......

问题是这不适用于我的 if 语句...即使当我打印“字符”时得到“a”,它在我的 if 语句中也没有注册为“a”。

我尝试将其更改为 if(&character == 'a')if(*character == 'a') ,但这些都不起作用。

这里有什么问题? 'a' 显然存储在内存中的某个位置,但是当我尝试将它用于我的 if 语句时它不起作用。

最佳答案

您将 character 变量声明为指向 char 的指针,而不是 char。只需将您的声明更改为:

char character;

关于c - 我用scanf获取输入,我用printf检查输入....然后我去用的时候输入不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859492/

相关文章:

c++ - 未定义对 'some_function' 的引用?

c - 带有 LibOpenCM3 的 STM32 FreeRTOS

c++ - CMake:具有不同链接标志的正确方法?

c - 这个对象如何引用自身

c - 将指向 char 数组的指针作为参数传递给函数 - C

结构指针地址比较不起作用

c - C 中悬空指针和字符数组的问题

使用 dtruss 捕获 Mach 系统调用

c - 判断指针是否映射到当前进程

c++ - 如何释放C++类中静态指针指向的内存