我使用scanf来获取输入,我使用printf来检查输入....然后当我去使用它时输入是不正确的

时间:2014-09-16 01:44:02

标签: c pointers memory char printf

如果我使用scanf("%c",&variableName)方法将某个字符保存到内存中,它会正确保存,我可以使用printf("%c",variableName)仔细检查字符是否已保存。我的问题是,在进行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!");
}

如果我输入字符&#39; a&#39;出现提示时,我的程序将打印出&#34;您输入了&#34; 这让我相信我做对了......

问题是这不适用于我的if语句......即使我在printf&#34; character,&#34;我得到了一个&#39;,它没有注册为&#39; a&#39;在我的if语句中。

我尝试将其更改为if(&character == 'a')if(*character == 'a'),但这些都没有奏效。

这是什么问题? &#39;一个&#39;显然存储在内存中的某个地方,但当我尝试将它用于我的if语句时,它不起作用。

1 个答案:

答案 0 :(得分:1)

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

char character;