繁体   English   中英

从字符串中读取数字数组

[英]Reading an array of numbers from a string

我有一个包含数百个用空格分隔的双精度值的字符串,我需要将它们读入数组。

显然,使用sscanf("%lf %lf .... ",array[0], array[1],...)不是明智的选择。 我可以将字符串保存到文件中并使用fscanf因为从文件读取时“头”会向前移动。 我想知道是否还有其他方法可以做到这一点。

您可以使用例如以下方法。

#include <stdio.h>

int main( void ) 
{
    const char *s = " 123.321 456.654 789.987";
    enum { N = 10 };
    double a[N] = { 0.0 };

    int pos = 0;
    size_t n = 0;
    while ( n < N && sscanf( s += pos, "%lf%n", a + n, &pos ) == 1 ) n++;

    for ( size_t i = 0; i < n; i++ ) printf( "%.3f ", a[i] );
    putchar( '\n' );
}

程序输出为

123.321 456.654 789.987

或者,如果需要将字符串的原始地址保留在变量s ,则可以引入类型为const char *的中间指针。

例如

#include <stdio.h>

int main( void ) 
{
    const char *s = " 123.321 456.654 789.987";
    enum { N = 10 };
    double a[N] = { 0.0 };

    int pos = 0;
    size_t n = 0;
    const char *p = s;
    while ( n < N && sscanf( p += pos, "%lf%n", a + n, &pos ) == 1 ) n++;

    for ( size_t i = 0; i < n; i++ ) printf( "%.3f ", a[i] );
    putchar( '\n' );
}

您可以使用String Class的split函数。 假设您的字符串以“ s”表示。 然后,您可以执行以下操作-> String[] str=s.split('\\\\s'); 这将破坏基于空格的字符串并生成String数组。现在您必须将其转换为double值,以便可以遍历String数组并转换为doble并将其存储在单独的数组中,例如->

for(String st: str)
{
  var=Double.parseDouble(st);
}

'var'可以是要存储它的数组或变量。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM