调整大小(更多)我是否正确解析了浮点数? (使用 sscanf)

Resize (more) am i parsing floats correctl? (using sscanf)

我最近完成了较少的大小调整,并决定继续进行更多调整。它要求我做的第一件事是能够使用 atofsscanf 解析 2 个浮点数。经过一番研究后,我想到了使用其中一个来获取浮点数,但是如果我尝试将大小调整为 2.5,例如我会收到此错误:

*** Error in `./resize': corrupted size vs. prev_size: 0x0000000002100480 ***

已中止,这是我编写的用于通过命令行从用户解析浮点数的代码,只是想在尝试继续之前知道它是否正确。

int main(int argc, char *argv[])
{
    // ensure proper usage
    if (argc != 4)
    {
        fprintf(stderr, "Usage: copy infile outfile\n");
        return 1;
    }

    // remember filenames    
    float n = 0;
    sscanf(argv[1], "%f", &n);
    char *infile = argv[2];
    char *outfile = argv[3];

    // prints valve of f for debugging
    printf("f = %f.\n", n);

    return 0;
}

您正确使用了 sscanf。如果您对 sscanf 感到困惑,您应该查看 strtof().

#include <stdio.h>
#include <stdlib.h>  

int main(int argc, char *argv[])
{
    // ensure proper usage
    if (argc != 4)
    {
        fprintf(stderr, "Usage: copy infile outfile\n");
        return 1;
    }

    // remember filenames
    float n = 0;
    char *infile = argv[2];
    char *outfile = argv[3];

    // prints valve of f for debugging
    n = strtof(argv[1], NULL);
    printf("%f\n", n);
}

您仍然应该学习如何使用 sscanf(man 是您的朋友)进行更复杂的解析操作。但对于单一类型解析,始终使用 strtoxxx() 系列函数。