从字符串中获取双精度值

时间:2014-08-27 14:05:57

标签: c

我有一个C程序,用以下字符串生成或填充char的向量:

.........................
char value[160]
double*  d = NULL;
char * pEnd = NULL;

......................................

用rx填充值后:551.54 455.61 98

我会得到这个双倍价值, 我在这里尝试过:

printf(" the string value is %s \n",value); // works fine  
for (i = 0; i<3 ;i++) {
    if( i ==0)
        d[i] = strtod(value,&pEnd);
    else
       d[i] =strtod(pEnd,&pEnd);
    printf(" the value of d is %lf\n",d[i]);
}

程序因Segmentation fault错误而崩溃。知道如何解决这个问题吗? 提前谢谢

3 个答案:

答案 0 :(得分:2)

您需要为d分配空间。

尝试

double d[3] = {0}; // double *d = NULL;

如果要继续使用d作为指针,请在分配

之前分配空间
double *d = NULL;
d = malloc(3 * sizeof *d);
if (d != NULL) {
    // ... your code using d
    free(d);
} else {
    fprintf(stderr, "Unable to allocate memory for `d`.\n");
    exit(EXIT_FAILURE);
}

答案 1 :(得分:0)

似乎尚未分配dpEnd。另外,您已将i初始化为o,如果它不是错字(对于0?),则是未声明的变量(这会阻止您的代码形式)编译)。

答案 2 :(得分:0)

请注意 -

char * pEnd = = NULL; // you should not use '==' here

首先修复此问题 -

char * pEnd = NULL;

然后尝试为dpEnd分配内存并尝试。