gpt4 book ai didi

c - 获取段错误

转载 作者:行者123 更新时间:2023-12-04 10:41:46 29 4
gpt4 key购买 nike

为机器问题编写一些代码;我们刚刚开始使用指针等,所以我不太确定哪里错了。运行调试显示它是行: for(i=0; i<*y;i++) 抛出错误,尽管我确定 for(j=0;j<*x ;j++) 空间。任何帮助将不胜感激。

    int readImage(char* fileName,
int image[MAX_IMAGE_SIZE][MAX_IMAGE_SIZE][NUM_CHANNELS],
int* x,
int* y,
int* max)
{
/* Variable declarations*/
int i=0;
int j=0;
int k=0;
int num=0;
char c;
/* Opens file, skips first line*/
FILE *input=fopen(fileName, "r");
if(!input)
return -1;
do
c=getc(input);
while(c!='\n');
/*Saves the x and y components into a variable */
fscanf(input,"%d",&x);
fscanf(input,"%d",&y);
fscanf(input,"%d",&max);
/*Cycles through file, reading it into the array */
for(i=0; i<*y;i++)
{
for(j=0;j<*x;j++)
{
for(k=0;k<NUM_CHANNELS; k++)
{
/*Takes input */
fscanf(input, "%d",&num);
/*Stores into the array in the form of array[x][y][color] */
image[j][i][k]=num;
}
}
}
/*Closes input */
fclose(input);
return 0;
}

最佳答案

变量 x、y 和 max 已经是指针。所以你不需要在 fscanf() 中使用地址 &。此外,如果调用者没有,则需要为它们分配内存。

只需使用:

  fscanf(input,"%d",x);
fscanf(input,"%d",y);
fscanf(input,"%d",max);

并确保调用者为它们分配了内存。否则,使用 malloc()

关于c - 获取段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003917/

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