调整大小(更多)我是否正确解析了浮点数? (使用 sscanf)
Resize (more) am i parsing floats correctl? (using sscanf)
我最近完成了较少的大小调整,并决定继续进行更多调整。它要求我做的第一件事是能够使用 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;
}
您正确使用了 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()
系列函数。
我最近完成了较少的大小调整,并决定继续进行更多调整。它要求我做的第一件事是能够使用 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;
}
您正确使用了 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()
系列函数。