c - 无法存储 fgetc() 的值
问题描述
我正在尝试创建一个程序,该程序从文本文件中获取 2 个矩阵,然后将它们相乘。他们将永远能够成倍增加。我在存储从矩阵中获取的数据时遇到问题。我对 C 很陌生,我使用的 IDE 没有抛出任何错误,但程序没有运行。我推断这是因为我试图存储int c
,a[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[],我就会测试。谢谢
解决方案
您不应该一次读取一个字符,而是fscanf()
从文件中读取整个整数。它将解析数字并跳过它们之间的空格。
int i = 0;
while(fscanf(matrixA, "%d", &a[i]) == 1) {
printf("%d ", a[i]);
i++;
}
printf("\n");
推荐阅读
- c - 记事本++无法输出
- node.js - 如何全局应用 Swagger UI 的 @ApiBearerAuth() 而不是为每个控制器都应用
- r - 是否可以在 xaringan 幻灯片中调整背景图像的不透明度?
- python - 将模块级变量绑定到实例变量
- python - Python - 条件和循环
- git - 恢复 git 中的文件并将其从历史记录中删除
- r - R - 分组,然后遍历组并提取原始列值
- scala - 在Scala中使用线程池处理多个未来回调的正确方法
- javascript - 在带有 typescript 的 create-react-app 中使用 mozilla pdf.js
- html - 调试网格样式和格式