我正在通过C for Dummies。它有一个示例代码,用于使用gets
和atoi
将英寸转换为cm(第135页,如果您有文本)。
现在,我想尝试使用scanf
而不是可怕的gets
,这是我能想到的最好的(基于作者提供的代码)。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float height_in_cm;
char height_in_inches;
printf("Enter your height in inches: ");
scanf("%c"),&height_in_inches;
height_in_cm = atoi(height_in_inches)*2.54;
printf("You are %.2f centimetres tall.\n",height_in_cm);
return(0);
}
程序启动,但输入后才崩溃。我哪里错了?
答案 0 :(得分:0)
你在演员阵容中遇到麻烦。
atoi接受一个const char *作为输入。
你正在传递一个char,所以它隐含地将char转换为一个点,坏的坏事。
根据user3121023的建议,将height_in_inches更改为字符串。
char height_in_inches[20];
并使用%s读取
scanf("%s", height_in_inches);