gpt4 book ai didi

c - fscanf 返回随机大数

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:04 25 4
gpt4 key购买 nike

我正在尝试读取实际上是图像文件的内容,但已按如下方式转换为 .txt 文件。结构“image”已经定义。代码如下。

image read_Buffer(char* filename)//read from file in "buffer format" i.e 1 pixel at a time.
{
FILE *file;
file = fopen(filename, "r+");//input.txt is the image file
image img;
fscanf(file,"%d\t", &img.height);
fscanf(file,"%d\n", &img.breadth);//First line of "input.txt" gives the image dimensions
img.size = img.height*img.breadth;
img.value = (int*) malloc(img.size*sizeof(int));
for (int i=0; i<img.size; i++)
{
fscanf(file, "%d\n", &img.value[i]);
}
free(img.value);
fclose(file);
return img;
}

图像尺寸在第一行,img.height 和 img。广度读取成功。然而,问题在于 img.value[0] 和 img.value[1] 似乎都是大整数。从 img.value[2] 到文件末尾,一切都成功读取。

供引用的是input.txt的前几行:

69  97
168
166
122
126
138
127
125
122
123
129
119
105
106
120
125

最佳答案

问题与fscanf()无关。

您不应该在返回 img 之前释放 img.value

您当前的代码返回包含 danglingimg value 指针,取消引用导致 undefined behaviour .

附言您确实需要确保在完成后最终释放 img.value。否则你会有一个 memory leak .

关于c - fscanf 返回随机大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20815072/

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