如何在c中编写函数atof()而不使用<string.h>

问题描述 投票:0回答:1

我必须用 C 语言编写函数

atof()
,但仅使用指针,代码的“骨架”必须如下所示:

#include <stdio.h>

#define SIZE 1024

float atof(char *s) {
    //here comes the code
}

int main() {
    float f;
    char a[SIZE];

    scanf("%s", a);

    f = atof(a);

    printf("atof(\"%s\") = %f\n", a, f);

    return 0;
}

有什么想法吗?

我试过这个:

    char integer_part[SIZE], decimal_part[SIZE];

    while (*s != '.') {
        *integer_part += *s++;
        *integer_part -= '0';
    }
    return *integer_part;

代码期望将字符串转换为浮点数。例如:

atof("12")=12,
atof("123.456")=123.456,
atof("-123.456")=-123.456,
atof("-123.456e2")=-12345.6,
atof("-123.456e-2")=-1.23456
c string function pointers atof
1个回答
0
投票

您可以使用

sscanf
(在
<stdio.h>
中定义):

float atof(const char *s) {
    float f;
    sscanf(s, "%f", &f);
    return f;
}
© www.soinside.com 2019 - 2024. All rights reserved.