3

我知道这有多种方法,但我试图让用户输入一个字符并将该字符转换为特定的整数以供以后使用。我正在使用#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;

}
4

2 回答 2

3

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

printf("%d", *userChoice);
于 2013-03-08T19:14:25.430 回答
1

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

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

unsigned int getUserChoice(){ ... 等等。

于 2013-03-08T19:21:11.303 回答