不加番茄酱 2024-08-24 14:51 采纳率: 0%
浏览 11

C语言读取保存文本文件内容出错

为什么用C语言读取文本文件并保存到数组中,读取数组中内容发现文本文件中前面一部分数据并没有读取并保存呢?

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

int main() {
    // 打开文本文件
    FILE *fp = fopen("your_text_file.txt", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return 1;
    }

    // 确定文件大小
    fseek(fp, 0, SEEK_END);
    long fileSize = ftell(fp);
    fseek(fp, 0, SEEK_SET);

    // 分配内存保存文件内容到数组
    char *fileContentArray = (char *)malloc(fileSize + 1);
    if (fileContentArray == NULL) {
        perror("Memory allocation error");
        fclose(fp);
        return 1;
    }

    // 读取文件内容到数组
    fread(fileContentArray, 1, fileSize, fp);
    fileContentArray[fileSize] = '\0';

    fclose(fp);

    // 现在可以从数组中读取内容
    printf("File content from array:\n");
    for (int i = 0; i < fileSize; i++) {
        putchar(fileContentArray[i]);
    }

    // 释放内存
    free(fileContentArray);

    return 0;
}

  • 写回答

3条回答 默认 最新

  • a5156520 2024-08-24 15:45
    关注

    如果文件过长,可以加一点代码,比如,每100个字符,暂停一下,按下回车后再继续输出,这样可以看清前面输出的字符。

    修改如下:

    #include <stdio.h>
    #include <stdlib.h>
     
    int main() {
        // 打开文本文件
    //    FILE *fp = fopen("your_text_file.txt", "r");
        FILE *fp = fopen("11.txt", "r");
        if (fp == NULL) {
            perror("Error opening file");
            return 1;
        }
     
        // 确定文件大小
        fseek(fp, 0, SEEK_END);
        long fileSize = ftell(fp);
        fseek(fp, 0, SEEK_SET);
     
        // 分配内存保存文件内容到数组
        char *fileContentArray = (char *)malloc(fileSize + 1);
        if (fileContentArray == NULL) {
            perror("Memory allocation error");
            fclose(fp);
            return 1;
        }
     
        // 读取文件内容到数组
        fread(fileContentArray, 1, fileSize, fp);
        fileContentArray[fileSize] = '\0';
     
        fclose(fp);
     
        // 现在可以从数组中读取内容
        printf("File content from array:\n");
        for (int i = 0; i < fileSize; i++) {
            putchar(fileContentArray[i]);
            if((i+1)%100==0){ // 每输出100个字符, 暂停一下,按下回车后再继续输出 
                getchar();
            }
        }
     
        // 释放内存
        free(fileContentArray);
     
        return 0;
    }
     
    
    

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月24日

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项