gpt4 book ai didi

无法使用 fscanf 正确读取

转载 作者:行者123 更新时间:2023-11-30 15:14:41 25 4
gpt4 key购买 nike

我有以下困难。我正在尝试读取此文件。

3
1 2 3
2
4 5

单独的数字就是数组的大小(3 和 2)。下面的数字就是数组。所以 3 是 (1,2,3) 的大小2 是 (4,5) 的大小

我在 C 上编写了一段代码来读取这些数字并将它们存储在使用 malloc() 的数组中。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(){
int i=0, j, *size, *vector;

size=(int*)malloc(sizeof(int));
vector=(int*)malloc(sizeof(int));

FILE *file;
file=fopen("file.dat", "rt");

if (file==NULL){
printf("Exit ...");
exit(1);
}
else {
do{
fscanf(file,"%d",&size[i]);
for(j=0;j<=size[i];j++){
fscanf(file,"%d",&vector[j]);
}
i++;

}while(feof(file)==0);
}
fclose(file);

return 0;
}

正在正确读取文件,但如果我 printf 得到的数字:

3
5
2
3
4
2

最佳答案

这里有两件事要提一下。

  1. 您通过 malloc() 仅为一个变量分配了内存,但您尝试在 do...while 循环中访问超出已分配内存的内容。您需要在需要时realloc()

  2. 请参阅Why is “while ( !feof (file) )” always wrong?

关于无法使用 fscanf 正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971864/

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