如果我想将字符数组中的前3个字符解析为double,忽略下列字符,我真的需要这样做吗?字符串长度有限的strtod
int main() { const char a[] = "1.23"; char *b = malloc(sizeof(char) * 4); memcpy(b, a, sizeof(char) * 3); b[3] = '\0'; printf("%f\n", strtod(b, NULL)); // Prints 1.20000, which is what I want free(b); }
是不是有像strtod
的功能,使您可以指定最大字符串长度应该寻找数字?
编辑:我想它打印1.2
(它目前如此),不1.23
!
我没有想要的精度,我希望它受字符串大小的限制,所以''1.23“=> 1.2','”1234“=> 123.0'&'”0.09“=> 0.0' – Tyilo 2013-05-07 07:11:37
@Tyilo :''1234“=> 123.0' ??? – alk 2013-05-07 09:53:41
@alk您首先获取字符串的三个**字符**:'“1234”=>“123”',然后将其转换为双“123”=> 123.0'。 – Tyilo 2013-05-07 10:51:22