调整大小(更多)我解析浮点数吗? (使用sscanf)

时间:2018-08-03 13:55:04

标签: c cs50

我最近减少了尺寸调整,并决定继续调整尺寸。它要求我做的第一件事是能够使用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;
}

1 个答案:

答案 0 :(得分: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()系列函数。