我最近减少了尺寸调整,并决定继续调整尺寸。它要求我做的第一件事是能够使用atof
和sscanf
进行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;
}
答案 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()
系列函数。