c – 字符串长度有限的字符串
发布时间:2020-12-16 09:44:41 所属栏目:百科 来源:网络整理
导读:如果我想将char数组中的前3个字符解析为double,忽略以下字符,我真的需要这样做吗? int main() { const char a[] = "1.23"; char *b = malloc(sizeof(char) * 4); memcpy(b,a,sizeof(char) * 3); b[3] = ' '; printf("%fn",strtod(b,NULL)); // Prints 1.2
如果我想将char数组中的前3个字符解析为double,忽略以下字符,我真的需要这样做吗?
int main() { const char a[] = "1.23"; char *b = malloc(sizeof(char) * 4); memcpy(b,a,sizeof(char) * 3); b[3] = ' '; printf("%fn",strtod(b,NULL)); // Prints 1.20000,which is what I want free(b); } 是不是像strtod这样的函数允许你指定它应该搜索数字的最大字符串长度? 编辑:我希望它打印1.2(它目前正在做),而不是1.23! 解决方法
如果您始终只想考虑给定字符串中的三个第一个字符,则可以使用以下代码:
#include <stdio.h> #include <string.h> double parse_double(const char *str) { char *tmp = 0; double result = 0; asprintf(&tmp,"%.3s",str); result = strtod(tmp,0); free(tmp); return result; } int main(void) { printf("%fn",parse_double("1.23")); // 1.2 printf("%fn",parse_double("1234")); // 123 printf("%fn",parse_double("0.09")); // 0.0 return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |