我知道有很多关于"在C"中从文件加载矩阵的问题和答案。但我有一个问题和疑问。
我的代码看起来像这样:
for(int i=0; fgets(buffer_char, 256, file); i++) {
tmp_char = strtok(buffer_char, " \t");
for(int j=0; tmp_char != NULL; j++) {
printf("%s ", tmp_char);
strtod(tmp_char, array[i][j]);
tmp_char = strtok(NULL, " \t");
}
}
我输入文件的矩阵如下:
3
1 2 3
4 5 6
5 6 7
我试图将其加载到数组中,但我必须检查输入值是否正确。我的问题是,我怎样才能做得更好?哪种解决方案会更正确?
@edit:
我将代码修改为:
for(int i=0; fgets(buffer_char, 256, file); i++) {
array[i][0] = strtod(buffer_char, &tmp_char);
for(int j=1; tmp_char == NULL; j++) {
array[i][j] = strtod(tmp_char, &tmp_char);
}
}
它有效,我想要什么,但仅适用于新线的第一个元素。我知道,问题出在" array [i] [j] = strtod(tmp_char,& tmp_char);",但我不知道该怎么做。
答案 0 :(得分:1)
您只需使用fscanf
验证并将输入存储到数组中即可。
代码:
if((check=fscanf(fp,"%d",&n))==1)
{
int Arr[n][n];
for(int i=0; i<n; i++) {
for(int j=0;j<n;j++){
fscanf(fp,"%d",&Arr[i][j]);
printf("%d ",Arr[i][j]);
}
printf("\n");
}
}