如何在C中将char *转换为int或double

时间:2012-03-07 23:43:41

标签: c

很抱歉,如果这是一个非常简单的问题,但我对C很新。我希望能够将char * s转换成双打和整数,似乎无法找到解释如何。

编辑: 我正在阅读用户输入,这是一个char *。我希望将输入的一半(例如“23”)转换为23和一半,例如“23.4”转换为23.4。

2 个答案:

答案 0 :(得分:15)

您可以施放 char*,如下所示:

char  *c = "123.45";
int    i = (int) c;      // cast to int
double d = (double) c;   // cast to double

但这会产生荒谬的结果。它只是强制指针被视为整数或双精度。

我认为你想要的是解析(而不是强制转换)文本到intdouble。试试这个:

char  *c = "123.45";
int    i = atoi(c);
double d = atof(c);

答案 1 :(得分:2)

严格来说,你可以这样做:(int)指针。

但是,您可能正在寻找atoi和atof功能。

atoi是一个函数,它将指向包含十进制整数的字符串的char *转换为整数。

atof同样是双倍的。