使用scanf()输入多个变量?

时间:2012-01-30 02:35:19

标签: c scanf

我想知道是否可以使用scanf()来读取一行(实际上只有1位从0到9)并输入数据作为char变量和整数变量,因此用户只需要输入号码一次。任何帮助将不胜感激。我用C编写,使用nano作为我的文本编辑器,gcc作为我的编译器,Ubuntu 12.04作为我的操作系统。如有必要,我也可以访问Windoze。提前谢谢!

2 个答案:

答案 0 :(得分:1)

您不想两次使用该变量,您希望使用强制转换类型转换

将变量作为一个字符读取,检查它是否在'0''9'之间(字符零和字符九),如果是,则将其转换为int,如此:int x = (int)(my_character-'0');

如果您想要非常安全或需要多于一个字符的字符串,请参阅atoi函数。

答案 1 :(得分:1)

您可以使用scanf读取整数,然后通过添加'0'将其转换为字符。由于数字总是按顺序表示,因此会将任何单个数字整数转换为相应的字符值。

int i;

do {
    printf("Enter an integer: ");
    scanf("%d", &i);

    if (i < 0 || i > 9)
        printf("Please try again (number must be between 0 and 9)\n");
} while (i < 0 || i > 9);

char c = i + '0';

// now i has the number and c has the character
printf("%d %c\n", i, c); // outputs, e.g., 4 4