gpt4 book ai didi

c - 丢失数组指针值?

转载 作者:太空狗 更新时间:2023-10-29 16:09:54 26 4
gpt4 key购买 nike

我正在创建一个函数,用于将数字从文件读取到数组中。但似乎从函数返回后,最后一个值丢失了。这是我的代码:

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 的数字。在函数 loadDataset 中,打印结果是

1
2
3
4
5
6

但是当回到main函数时,打印的结果是

1
2
3
4
5
0

可能是什么问题?
如果我遗漏了一些微不足道的东西,我很抱歉,但我对 C 语言编程不是很熟悉。

最佳答案

这个表达式

fscanf(fp, "%d", &dataSet[sizeof(int) * i]);
^^^^^^^^^^^^^^^

没有意义。由于使用这样的表达式,程序具有未定义的行为,因为有人试图访问分配的数组之外的内存。

改用

fscanf(fp, "%d", &dataSet[i]);

fscanf(fp, "%d", dataSet + i);

关于c - 丢失数组指针值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169738/

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