如何解决在将输入打印在屏幕上之后,为什么没有正确存储我的数据?
因此,我正在尝试从文件中读取矩阵并将其存储到数组中。
矩阵文件如下:
2 3
1 5 8
6 3 9
第一行的前两位数字代表行x列。
每当我尝试将某些东西存储到数组中时,似乎都遇到了问题,因为我能够将所有内容简单地重印到屏幕上,但是当我尝试重印时,得到的值却与预期不同。
我的代码如下:
double *read_matrix(char *filename){
FILE *file=fopen(filename,"r");
if(!file){
fprintf(stderr,"An error has occurred. Wrong file name?\n");
exit(errno);
}
double *data=malloc(4096*sizeof *data);
char *buff=malloc(256*sizeof *buff);
char *curr;
char *save;
while(fgets(buff,sizeof(buff),file)){
curr=strtok_r(buff," ",&save);
int i=0;
while(curr!=NULL){
if(curr==NULL){
perror("curr is null");
}
data[i]=strtod(curr,NULL);
curr=strtok_r(NULL,&save);
i++;
}
}
free(buff);
return data;
}
每当我运行此命令并尝试打印数组的前两个值时,我的行和列都会得到以下内容:
A: 0.000000 | -1.000000
我很难理解自己做错了什么,如果不是一个问题,那就是另一个问题!
我不确定是否有帮助,但是下面您可以找到调用read_matrix()的方法:
void executemm(char *file1,char *file2)
{
double *matrixA = read_matrix("matrix1");
printf("A: %f | %f\n",matrixA[0],matrixA[1]);
}
它所做的只是指定要读取的文件,然后显示返回数组的前两个元素(应该是尺寸)。
编辑:更新为代码块,并更新实际输出
编辑2:再次,更新代码块,并更新实际输出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。