我有一个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
错误而崩溃。知道如何解决这个问题吗?
提前谢谢
答案 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)
似乎尚未分配d
或pEnd
。另外,您已将i
初始化为o
,如果它不是错字(对于0
?),则是未声明的变量(这会阻止您的代码形式)编译)。
答案 2 :(得分:0)
请注意 -
char * pEnd = = NULL; // you should not use '==' here
首先修复此问题 -
char * pEnd = NULL;
然后尝试为d
和pEnd
分配内存并尝试。