将char转换为int无效

时间:2013-03-08 19:12:54

标签: c

我知道这有多种方法,但我试图让用户输入一个字符并将该字符转换为特定的整数供以后使用。我正在使用#define常量来简化事情,以防以后需要更改某些内容。 我为userChoice获得的值不是0,1或2,而是一个很大的数字,所以有些错误。

这些是代码的相关部分。

    #define ROCK 0
    #define PAPER 1
    #define SCISSORS 2
    void getData (int* userChoice)
{
    char charvalue;
    printf("\n\nEnter the R, P, S, or Q (for quit) ");
    scanf("%c", &charvalue);
    charvalue = toupper(charvalue);
    if (charvalue == 'R')
        *userChoice = ROCK;
    else if (charvalue == 'P')
        *userChoice = PAPER;
    else if (charvalue == 'S')
        *userChoice = SCISSORS;
    else if (charvalue == 'Q')
        exit (1);
    else
        printf("\nerror");
    printf("%d", userChoice);

    return;

}

2 个答案:

答案 0 :(得分:3)

您打印整数的地址,而不是值。要打印该值,使用*userChoice

printf("%d", *userChoice);

答案 1 :(得分:1)

您的输入是指向int的指针,因此您必须打印指针* userChoice的值。

更好的做法是让函数将选择作为unsigned int返回,而不是传递引用并修改引用。换句话说,最好使用如下的接口:

unsigned int getUserChoice(){... etc。