尝试从格式化为表格的文档中创建表格,但是存储在表格中的值在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);
答案 0 :(得分:1)
i
以未定义的随机值开头,因此行为为未定义。
请注意,int i, j=0;
不会 初始化i
-它只会初始化j
。
除此之外,vtab
被声明为一个指向int的指针,但是它从未设置为指向任何地方,因此它也指向一个随机的内存地址。