如何在一行中读取多个浮点数,然后将它们添加到数组中?
How to read in multiple floats on one line and then add them to an array?
我正在尝试读入一行浮点值,例如
1.1 -100.0 2.3
我需要将它们存储在一个数组中。
我正在使用 fgets()
方法将输入转换为字符串。无论如何我可以使用这个字符串来用值填充浮点数组吗?或者有更好的方法吗?
#include <stdio.h>
int main(){
char input [500];
float values [50];
fgets(input, 500, stdin);
// now input has a string with all the values
// and the values array needs to be filled with the values
}
输入的字符串可以申请sscanf
这是一个简化的演示程序。
#include <stdio.h>
int main(void)
{
char input[20];
float values[3];
fgets( input, sizeof( input ), stdin );
size_t n = 0;
char *p = input;
for ( int pos = 0; n < 3 && sscanf( p, "%f%n", values + n, &pos ) == 1; p += pos )
{
++n;
}
for ( size_t i = 0; i < n; i++ )
{
printf( "%.1f ", values[i] );
}
putchar( '\n' );
return 0;
}
如果输入的字符串是
1.1 -100.0 2.3
那么数组values
的输出就是
1.1 -100.0 2.3
我正在尝试读入一行浮点值,例如
1.1 -100.0 2.3
我需要将它们存储在一个数组中。
我正在使用 fgets()
方法将输入转换为字符串。无论如何我可以使用这个字符串来用值填充浮点数组吗?或者有更好的方法吗?
#include <stdio.h>
int main(){
char input [500];
float values [50];
fgets(input, 500, stdin);
// now input has a string with all the values
// and the values array needs to be filled with the values
}
输入的字符串可以申请sscanf
这是一个简化的演示程序。
#include <stdio.h>
int main(void)
{
char input[20];
float values[3];
fgets( input, sizeof( input ), stdin );
size_t n = 0;
char *p = input;
for ( int pos = 0; n < 3 && sscanf( p, "%f%n", values + n, &pos ) == 1; p += pos )
{
++n;
}
for ( size_t i = 0; i < n; i++ )
{
printf( "%.1f ", values[i] );
}
putchar( '\n' );
return 0;
}
如果输入的字符串是
1.1 -100.0 2.3
那么数组values
的输出就是
1.1 -100.0 2.3