递增变量将我的指针更改为指针数组值

时间:2019-03-27 20:49:20

标签: c

尝试从格式化为表格的文档中创建表格,但是存储在表格中的值在i ++之后发生了变化,为什么?

int i, c, j=0;
int **vtab;

// C and L stands for columns ans lines

/* allocate memory for int value table   */
    vtab = (int **) malloc( L * sizeof( int *));
    for ( i=0; i<L; i++)
    {
        vtab[i]= (int *) malloc( C * sizeof( int ));
    }


do {
  c = (fgetc(fp) - 10); /* This function returns the character read as an unsigned char cast to an int or EOF on end of file or error. */
  if( feof(fp) ) {
     break ;
  }
  printf("%c", c);
  if (c != 32){
    if ( j>C ){
        j=0;
        i++;
    }
    vtab[i][j] = c;
    ++j;
  }
} while(1);

1 个答案:

答案 0 :(得分:1)

i以未定义的随机值开头,因此行为为未定义

请注意,int i, j=0;不会 初始化i-它只会初始化j

除此之外,vtab被声明为一个指向int的指针,但是它从未设置为指向任何地方,因此它也指向一个随机的内存地址。