0

我将以下内容存储在 char 数组中

"1, 1.0, 1.000, 1.0000"

我正在尝试将其解析为一个 int 和三个双精度数,如下所示

sscanf(myString, "%d %lf %lf %lf", &(myStruct->I1), &(myStruct->D1), &(myStruct->D2), &(myStruct->D3);
printf("%d %lf %lf %lf", myStruct->I1, myStruct->D1, myStruct->D2, myStruct->D3);

输出

1 0.000000 0.000000 0.000000
4

1 回答 1

1

源字符串包含逗号。所以你需要在sscanf.

给你。

#include <stdio.h>

int main( void ) 
{
    char myString[] = "1, 1.0, 1.000, 1.0000";
    struct myStruct
    {
        int I1;
        double D1;
        double D2; 
        double D3;
    } myStruct;
    
    sscanf( myString, "%d%*[ ,]%lf%*[ ,]%lf%*[ ,]%lf", 
            &myStruct.I1,&myStruct.D1, &myStruct.D2, &myStruct.D3 );
             
    printf( "%d, %.1f, %.2f, %.3f\n", 
            myStruct.I1, myStruct.D1, myStruct.D2, myStruct.D2 );
    
    return 0;
}

程序输出为

1, 1.0, 1.00, 1.000

格式字符串看起来更简单,例如

"%d ,%lf ,%lf ,%lf"

请注意,长度修饰符在使用时l在转换说明符中是多余的。%lfprintf

于 2021-12-02T19:42:11.050 回答