如何在一行中读取多个浮点数,然后将它们添加到数组中?

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