C 从循环中的指针中提取值
getLine是一个获取行的函数,我试图在getLine函数之外将行组合在一起。当我尝试在循环中执行此操作时,输出会出错。我打赌这和指针有关,但我花了很多时间试图弄明白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"
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是不正确的简单。输出是什么?输出应该是什么?完整的源/数据集/环境是什么?