c-打印填充的字符串数组会打印垃圾



我刚开始学习C,对RPG编码有一定的了解。和我之前的许多人一样,我对字符串、数组和指针以及如何使用它们感到困惑。

我正在开发一个程序,该程序从数据文件中获取行星的名称、赤道半径和极地半径,然后计算并输出体积和表面积。

我的主要函数有以下声明:

double       equi_rad[iNumPlanets]; /* equitoral radii of planets */
double       pol_rad[iNumPlanets];  /* polar radii of planets */
char         *name[iNumPlanets];    /* array containing planet name */

(iNumPlanets已初始化为8(

然后我调用函数load:

load("radii.dat", equi_rad, pol_rad, iNumPlanets, name);

Load在循环中读取文件并填充数组。我已经验证了这在函数中是正确的,所以复制这段代码似乎没有意义。这就是原型:

int load(const char* filename, double *equitoral_radii, double *polar_radii, const int iNumPlanets, char *planet_name[]);

回到我的主函数中,equi_radpol_rad数组已正确填充,并且可以使用。然而,当我尝试printf name数组内容时,这只是随机的废话。

有人能解释为什么我可以成功地修改函数中的double数组,而不能修改字符串数组吗?

回到我的主函数中,equi_rad和pol_rad数组是正确填充并且可以使用。然而,当我尝试打印名称数组的内容,这只是随机的废话。

您需要显示代码。猜测是您没有正确填充planet_name数组。您可能需要使用malloc(例如planet_name[i] = malloc(LENGTH)(,并将字符串内容复制到那里。那你就应该没有问题了。例如

planet_name[i] = malloc(strlen(sourceStr)+1);
strcpy(planet_name[i], sourceStr);

不要忘记为其分配数据的每个指针free

最新更新