我正在创建一个函数,用于将数字从文件中读取到数组中。但似乎从函数返回后,最后的值就丢失了。这是我的代码:
void loadDataset(int* dataSet, int DataSetSize, char *filename) {
FILE *fp;
fp = fopen( filename , "r" );
for(int i=0; i< DataSetSize; i++){
fscanf(fp, "%d", &dataSet[sizeof(int) * i]);
}
for (int i = 0; i < DataSetSize; i++) {
printf("%d\n", dataSet[sizeof(int) * i]);
}
fclose(fp);
}
int main(int argc, char *argv[]) {
...
int* ds = malloc(sizeof(int) * DataSetSize);
loadDataset(ds, DataSetSize, DatasetFilename);
for (int i = 0; i < DataSetSize; i++) {
printf("%d\n", ds[sizeof(int) * i]);
}
...
}我正在测试的文件包含从1到6的数字。
1
2
3
4
5
6但是当返回main函数时,打印的结果是
1
2
3
4
5
0有什么问题吗?
如果我错过了一些琐碎的东西,我很抱歉,但我不太熟悉C语言的编程。
发布于 2019-09-30 14:16:38
这句话
fscanf(fp, "%d", &dataSet[sizeof(int) * i]);
^^^^^^^^^^^^^^^ 没有任何意义。由于使用了这样的表达式,程序具有未定义的行为,因为有人试图访问分配数组之外的内存。
代用
fscanf(fp, "%d", &dataSet[i]);或
fscanf(fp, "%d", dataSet + i);https://stackoverflow.com/questions/58169738
复制相似问题