【发布时间】:2016-03-15 17:24:49
【问题描述】:
我需要在没有 atof() 或任何其他字符串操作函数的情况下将诸如“3.456”之类的字符串转换为浮点数。下面是我的代码,适用于 c 字符串到 int 的转换,但由于句点的原因,显然不适用于浮点数。我需要添加什么来处理这个时期?谢谢。
#include <stdio.h>
int size;
char string[] = "345";
int result = 0;
int i = 0;
int findLength(char string[]){
for(size = 0; string[size]!='\0'; size++){
}
return size;
};
void conversion(char string[]){
result = result * 10 + ( string[i] - '0' );
if (i < size - 1) {
i++;
conversion(string);
}
}
int main(int argc, const char * argv[]) {
findLength(string);
conversion(string);
printf("%d\n", result);
return 0;
}
【问题讨论】:
-
正确地做到这一点需要几千行代码,不分上下。
-
互联网上有很多例子,例如atof.c
-
我会使用逐字符状态机。也许只是我.. :)
-
你试过使用 sscanf 吗?
-
@bruceg 谢谢你提供的链接
标签: c string floating-point