You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++从文件读取矩阵实现加减运算报1120错误如何解决?

C++矩阵加减程序1120错误修复方案

首先明确:MSVC报错1120属于「未解析外部符号」类错误,完全由代码错误导致,和编译器异常无关,你的代码存在多类可复现错误,逐一修复即可:

  • 变量名拼写错误:你定义的文件流对象名为result1_file、result2_file,但判断文件打开状态时错误使用了不存在的变量result_file,编译器找不到该变量定义是触发1120报错的直接原因
  • 基础语法错误:矩阵加减的两行赋值语句末尾均遗漏了分号;,会直接触发编译失败
  • 文件操作逻辑错误:
    • fstream对象构造时传入文件名会自动调用open,后续重复调用open属于多余操作
    • 输出运算结果到文件时错误使用了输入运算符>>,该运算符作用是从文件读取数据到变量,写文件需要使用输出运算符<<
    • 打开result2_file时错误指定了文件名result1.txt,会导致减法结果覆盖加法结果文件内容
    • 打开结果文件时用ios::app模式会在原有文件内容后追加结果,如果你需要每次运行生成全新结果,建议改用ios::out模式

修正后的可运行代码

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    // 直接指定打开模式,避免重复open
    fstream matrix_file("matricies.txt", ios::in);
    fstream result1_file("result1.txt", ios::out);
    fstream result2_file("result2.txt", ios::out);

    if (!matrix_file) {
        cout << "矩阵文件打开失败!" << endl;
        return 1; // 打开失败直接退出,避免后续逻辑出错
    }
    cout << "矩阵文件打开成功!" << endl;

    if (!result1_file) {
        cout << "加法结果文件创建失败!" << endl;
        return 1;
    }
    cout << "加法结果文件创建成功!" << endl;

    if (!result2_file) {
        cout << "减法结果文件创建失败!" << endl;
        return 1;
    }
    cout << "减法结果文件创建成功!" << endl;

    int matrix1[9];
    int matrix2[9];
    int result1Matrix[9];
    int result2Matrix[9];

    // 读取两个矩阵数据
    for (int i = 0; i < 9; ++i) {
        matrix_file >> matrix1[i];
    }
    for (int i = 0; i < 9; ++i) {
        matrix_file >> matrix2[i];
    }

    // 矩阵加减运算
    for (int i = 0; i < 9; ++i) {
        result1Matrix[i] = matrix1[i] + matrix2[i];
    }
    for (int i = 0; i < 9; ++i) {
        result2Matrix[i] = matrix1[i] - matrix2[i];
    }

    // 写入结果到对应文件,3个元素换行模拟3x3矩阵格式
    for (int i = 0; i < 9; ++i) {
        result1_file << result1Matrix[i] << " ";
        if ((i + 1) % 3 == 0) result1_file << endl;
    }
    for (int i = 0; i < 9; ++i) {
        result2_file << result2Matrix[i] << " ";
        if ((i + 1) % 3 == 0) result2_file << endl;
    }

    matrix_file.close();
    result1_file.close();
    result2_file.close();
    return 0;
}

额外注意事项

  • 确保matricies.txt存放在程序运行的工作目录下,文件内按顺序存放18个整数,前9个为第一个3x3矩阵元素,后9个为第二个3x3矩阵元素
  • 如果需要处理非固定大小的矩阵,建议改用vector动态存储,避免硬编码数组长度的局限

内容的提问来源于stack exchange,提问作者TheRealMuney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:36:03