gpt4 book ai didi

c - 如何在 C 中将指针转换为 double?

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:16 26 4
gpt4 key购买 nike

我编写了以下代码,接受以逗号分隔的人口值。然后,我将输入的字符串拆分并存储到一个数组中。现在,我想存储在一个 double 中,这样我就可以对其执行数学函数。但首先,我想将它输出为 double。我试过 strtod 但它给我一个错误

passing argument 1 of '__strtod' makes pointer from integer without a cast    [-       Wint-conversion]

这是我的主要功能

int main(int argc, char const *argv[])
{
int p_size, s_size;
int n =0;
char *population;
char population_string[100];
printf("Enter the population size:");
scanf("%d",&p_size);
printf("Enter the sample size:");
scanf("%d",&s_size);
printf("Enter the population values separated by comma(,):");
scanf("%s",&population_string);
printf("The population are:%s\n",population_string);
population = splitPopulation(population_string,p_size);
printf("The contents are:\n");
for (int i = 0; i < p_size; i++)
{
printf("%c\n",population[i]);
printf("%f\n", strtod(population[i],NULL));
}
return 0;
}

这是我拆分字符串的函数

char * splitPopulation(char *population_string, int size){
char *population_array=malloc(sizeof(char*)*size);
char *token = strtok(population_string,",");
for (int i = 0; i < size; i++)
{
population_array[i]= *token;
token= strtok(NULL,",");
}
return population_array;
}

我的示例输入是:

Enter the population size:4
Enter the sample size:2
Enter the population values separated by comma(,):1,2,3,4

最佳答案

让我们从 splitPopulation 开始逆向工作。这个函数返回一个指向 char 的指针

char *

但您真正返回的是一个指向 char 的指针数组,这意味着类型是:

char **

换句话说,返回值是一个指针,它指向的是另一个指针,指向逗号分隔的人口字符串中第一个数字的第一个字符。

所以现在 population 是一个 char ** 而不是 char *,population[i] 是一个 char * 而不是 char,所以你可以将它传递给 strtod。 (您会看到有关将 int 作为指针传递的警告,因为 population[i] 当前是一个 char 并且正在被提升为 int。)

您还必须将 population_array 定义为 char **。给 population_array[i] 赋值时,直接赋值给 token 即可,无需引用运算符。

关于c - 如何在 C 中将指针转换为 double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com