如果有人能帮助我完成我的“程序”,那就太好了。我正在尝试读取 csv 文件并将其移动到二维数组。它停在第 17 行(共 200 行)。
int main ()
{
FILE * pFile;
double **tab;
char bufor [100];
int i=0;
tab = (double**)malloc(sizeof(double*));
pFile = fopen ("sygnal1.csv" , "r");
if (pFile == NULL) printf("Error");
else
while (fgets (bufor , 100 , pFile))
{
tab[i] = (double *) malloc(2 * sizeof(double));
sscanf(bufor, "%lf, %lf,", &tab[i][0], &tab[i][1]);
printf("%lf.%lf.\n",tab[i][0],tab[i][1]); //It's here only for testing
i++;
}
printf("number of lines read %d\n",i);
fclose (pFile);
system("PAUSE");
return 0;
}
最佳答案
您还没有为tab
完全分配内存。您刚刚分配了一个(未初始化的)指针。当 i > 0 时,您就会陷入未定义行为。您需要分配至少与文件中可能存在的行一样多的元素,例如
tab = malloc(sizeof(*tab) * MAX_LINES);
或在每次迭代后使用realloc
来增加元素数量。
关于c - 程序使用 fgets 停止读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13293934/