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