qt/c/c++文件操作总结

1. 读取文件

1.1 Qt以二进制方式读取大文件返回char*

在Qt中以二进制模式读取一个大文件(以500MB为例)并将其内容存储到char*数组中,需要谨慎处理内存分配。以下是实现这一功能的步骤和示例代码:

1. 打开文件

使用QFile类以二进制模式打开文件。

2. 检查文件大小

使用QFile的size方法来检查文件的大小,确保它不会超过程序的内存限制。

3. 分配内存

使用new操作符为文件内容分配足够的内存。

4. 读取文件

使用QFile的read方法将文件内容读入分配的内存中。

5. 关闭文件

完成读取后关闭文件

示例代码

#include <QFile>
#include <QDebug>

char* readFile(const QString& filename) {
    QFile file(filename);
    if (!file.open(QIODevice::ReadOnly)) {
        qDebug() << "Cannot open file for reading:" << filename;
        return nullptr;
    }

    qint64 size = file.size();
    if (size > 500 * 1024 * 1024) { // 500MB
        qDebug() << "File is too large";
        return nullptr;
    }

    char* buffer = new char[size]; // 分配内存
    if (!buffer) {
        qDebug() << "Memory allocation failed";
        return nullptr;
    }

    qint64 bytesRead = file.read(buffer, size);
    if (bytesRead != size) {
        qDebug() << "Error reading file";
        delete[] buffer;
        return nullptr;
    }

    file.close();
    return buffer;
}

int main() {
    const QString filename = "path/to/your/largefile.bin";
    char* data = readFile(filename);

    if (data) {
        // 处理数据...

        delete[] data; // 释放内存
    }

    return 0;
}

1.2 C语言以二进制读取读取大文件返回char*

在C语言中以二进制模式读取一个大文件(以500MB为例),你需要使用标准的文件IO函数,并且仔细处理内存分配。这里是一个实现的基本步骤和示例代码:

1. 打开文件

使用fopen函数以二进制模式("rb")打开文件。

2. 确定文件大小

使用fseek和ftell来确定文件的大小,以便知道需要分配多少内存。

3. 分配内存

使用malloc为文件内容分配足够的内存。

4. 读取文件

使用fread将文件内容读入分配的内存中。

5. 关闭文件

读取完成后,使用fclose关闭文件。

示例代码

#include <stdio.h>
#include <stdlib.h>

char* readFile(const char* filename) {
    FILE* file = fopen(filename, "rb");
    if (!file) {
        perror("Error opening file");
        return NULL;
    }

    // 移到文件末尾
    fseek(file, 0, SEEK_END);
    long fileSize = ftell(file);
    rewind(file); // 或 fseek(file, 0, SEEK_SET);

    // 分配内存
    char* buffer = (char*)malloc(fileS
  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT/c 实现文件对比可以通过以下步骤实现: 1. 读取两个文件的内容,可以使用 QFile 类来读取文件。 2. 将两个文件的内容进行比较,可以使用字符串比较函数(如 strcmp())或逐个字符比较的方法。 3. 将比较结果输出,可以使用 QT 中的 QTextEdit 控件来显示比较结果。 4. 可以添加一些额外的功能,比如文件选择对话框、文件打开和保存等。 下面是一个简单的 QT/c 文件对比程序的示例代码: ``` #include <QApplication> #include <QFileDialog> #include <QFile> #include <QTextStream> #include <QTextEdit> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 打开第一个文件 QString fileName1 = QFileDialog::getOpenFileName(0, "Open File 1", ".", "Text Files (*.txt)"); QFile file1(fileName1); file1.open(QIODevice::ReadOnly | QIODevice::Text); // 读取第一个文件的内容 QTextStream in1(&file1); QString fileContent1 = in1.readAll(); // 打开第二个文件 QString fileName2 = QFileDialog::getOpenFileName(0, "Open File 2", ".", "Text Files (*.txt)"); QFile file2(fileName2); file2.open(QIODevice::ReadOnly | QIODevice::Text); // 读取第二个文件的内容 QTextStream in2(&file2); QString fileContent2 = in2.readAll(); // 比较两个文件的内容 QString compareResult; if (fileContent1 == fileContent2) { compareResult = "The two files are identical."; } else { compareResult = "The two files are different."; } // 显示比较结果 QTextEdit textEdit; textEdit.setPlainText(compareResult); textEdit.show(); return app.exec(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值