C 从循环中的指针中提取值

C 从循环中的指针中提取值,c,pointers,C,Pointers,getLine是一个获取行的函数,我试图在getLine函数之外将行组合在一起。当我尝试在循环中执行此操作时,输出会出错。我打赌这和指针有关,但我花了很多时间试图弄明白 int num; int matrix[370]; i=1; j=0; while(*(point=getLine(infile)) != -2){ n[j]=*point; if(n[0] != n[j]){ printf("matrix dim error 1"

getLine是一个获取行的函数,我试图在getLine函数之外将行组合在一起。当我尝试在循环中执行此操作时,输出会出错。我打赌这和指针有关,但我花了很多时间试图弄明白

  int num;
  int matrix[370];

  i=1;
  j=0;
  while(*(point=getLine(infile)) != -2){ 
      n[j]=*point;
      if(n[0] != n[j]){
        printf("matrix dim error 1");
        break;
      }
      while (i<=n[j]){
        matrix[i+(3*j)] = *(point+(i+(3*j)));
        i++;
        printf("%d", matrix[i+(3*j)]);
      }
      printf("%d %d %d\n", matrix[1],matrix[2],matrix[3]);
      j++;
  }
  fclose( infile );
}

int *getLine(FILE *infile){

  int l=0;
  int line[7];
  int i=1;
  int *point;

  while ((l=getNum(infile)) != -1){
    if(l==EOF){
      line[0]=EOF;
      point = &line[0];
      return(point);
    }
    line[i]=l;
    i++;
  }
  if(i==1){
    line[0]=-2;
    point = &line[0];
    return(point);
  }
  line[0]=(i-1); //stores the length of the line in first space
  printf("%d %d %d\n",line[1],line[2],line[3]);
  point = &line[0];
  printf("%d\n",*point);
  return(point);
}

int getNum(FILE *infile) {
  int c=0;
  int value=0;


  while ((c=fgetc(infile)) != '\n') {
    if(c==EOF){
      return(EOF);
    }
    if((c==32)||(c==13)){
      if(value != 0){ //Making sure a number has been gotten
        //printf("%d\n\n", value);
        return(value);
      }
      //otherwise keep getting characters
    }
    else if ((c<=47)||(c>=58)){
      printf("incorrect number input %d\n", c);
      exit(1);
    }
    else {
      value = (10*value) + (c - '0');
    }
  }
  return(-1);//flags that the end of line has been hit
}
int-num;
int矩阵[370];
i=1;
j=0;
而(*(point=getLine(infle))!=-2){
n[j]=*点;
如果(n[0]!=n[j]){
printf(“矩阵尺寸误差1”);
打破
}
而(i

while (i<=n[j]){
while(i代替

while (i<=n[j]){
while(i有一个问题:

int *getLine(FILE *infile){
    int line[7];
    int *point;

    point = &line[0];
    return(point);
}
返回指向局部变量的指针。从函数返回时,该指针将无效。您可以在堆上分配它,或者让调用方将其作为参数提供。

有一个问题:

int *getLine(FILE *infile){
    int line[7];
    int *point;

    point = &line[0];
    return(point);
}

您返回一个指向局部变量的指针。当您从函数返回时,它将变得无效。您可以在堆上分配它,或者让调用者将其作为参数提供。

为我们展示变量声明,看在可怜的份上!您能提供声明点和填充的代码吗?以及所有内容吗e输出?我怀疑问题在于,
I
在外部循环的每次迭代中都没有重置,因此它的值会不断增加。正如我经常告诉我的质量部门的那样:记录错误并不容易。输出是什么?输出应该是什么?完整的源/数据集/环境是什么?向我们展示变量Ble声明,看在可怜的份上!你能提供你声明point和Infle的代码吗?以及所有的东西?输出出了什么问题?我怀疑问题是,
I
在外循环的每次迭代中都没有重置,所以它的值会不断增加。正如我经常告诉我的质量部门的那样:记录一个bug是不正确的简单。输出是什么?输出应该是什么?完整的源/数据集/环境是什么?