首页 > 解决方案 > 无法存储 fgetc() 的值

问题描述

我正在尝试创建一个程序,该程序从文本文件中获取 2 个矩阵,然后将它们相乘。他们将永远能够成倍增加。我在存储从矩阵中获取的数据时遇到问题。我对 C 很陌生,我使用的 IDE 没有抛出任何错误,但程序没有运行。我推断这是因为我试图存储int ca[i]但我不知道为什么。

我尝试过更改数组和 c 的类型,但这些似乎都不是问题。

int main()
{
FILE *matrixA;
FILE *matrixB;
int a[8];
int b[8];
int i;
int j;

matrixA = fopen("matrixA.txt", "r");
matrixB = fopen("matrixB.txt", "r");

while(1) {
  int c = fgetc(matrixA);
  a[i] = c;
  if( feof(matrixA) ) {
     break;
  }
  printf("%c", c);
  i++;
}

printf("\n");
printf("A %c", a[0]);
printf("\n");

while(1) {
  int c = fgetc(matrixB);
  b[j] = c;
  if( feof(matrixB) ) {
     break;
  }
  printf("%c", c);
  j++;
}
printf("B %c", b[0]);

我得到的唯一错误消息是 main 返回 -1029219。矩阵以“1 2 3 4\n8 7 6 5”的形式出现。目前我不测试空白,但一旦我能够弄清楚如何将值传递给 a[] 和 b[],我就会测试。谢谢

标签: c

解决方案


您不应该一次读取一个字符,而是fscanf()从文件中读取整个整数。它将解析数字并跳过它们之间的空格。

int i = 0;
while(fscanf(matrixA, "%d", &a[i]) == 1) {
  printf("%d ", a[i]);
  i++;
}
printf("\n");

推荐阅读