【发布时间】:2011-01-08 17:27:05
【问题描述】:
我正在尝试将我的字符串转换为双精度的动态数组。我的字符串的每个空格代表一列,每个“;”代表一个新行。此代码运行时,仅适用于 *F[0][col] 时。当它到达 *F[1][col] 时,它给了我错误“CCode.exe 中 0x00e4483c 处的未处理异常:0xC0000005:访问冲突读取位置 0xcccccccc。”有人知道为什么吗?
void main(void) {
double **F = NULL;
F = malloc(row * sizeof (double *));
for (m=0; m < row;m++) {
F[m] = malloc(col * sizeof(double ));
}
FParser(string, &F);
for (m=0;m<rowF;m++)
free(F[m]);
free(F);
}
void FParser(char string[256], double ***F) {
while (dummyChar_ptr != NULL) {
dummyChar_ptr = strtok(dummyChar_ptr," ");
while ((dummyChar_ptr) != NULL) {
*F[row][col] = atof(dummyChar_ptr);
dummyChar_ptr = strtok(NULL," ");
col++;
}
col=0;
row++;
strcpy(dummyChar,string);
dummyChar_ptr = strtok(dummyChar,";");
for (x=0;x<row;x++)
dummyChar_ptr = strtok(NULL,";");
}
//example String: 1 0.1 0 0; 0 1 0 0; 0 0 1 0.1; 0 0 0 0.1
【问题讨论】:
-
你为什么不发布完整的代码?我们找不到您的行和列的定义。它们是全局变量吗?也许问题是您在 main 和 FParser 之间共享行/列。
-
你能修复你的代码清单吗,我认为它缺少声明和右括号,很难阅读。
标签: c multidimensional-array pass-by-reference dynamic-memory-allocation