今生情谊 2022-10-10 01:00 采纳率: 66.7%
浏览 36
已结题

这个问题哪里出现的问题我调试多次无法解决


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//获取文件中有效的行数
int getFileLines(FILE *file) {

    if (file ==NULL)
    {
        return -1;
    }

    char buf[1024];
    int lines = 0;
    while (fgets(buf,1024,file)!=NULL)
    {
        lines++;
        //printf("%s\n",buf);
    }

    //将文件光标 置手
    fseek(file,0,SEEK_SET);

    return lines;
}

void readFileData(FILE *file ,char **pArray ,int len) {
    if (file == NULL)
    {
        printf("读取失败\n");
        return;
    }
    if (pArray == NULL)
    {
        return;

    }
    if (len <= 0)
    {
        return;
    }

    char buf[1024] = {0};
    int index = 0;
    while (fgets(buf,1024,file)!=NULL)
    {
        //计算开辟每个字符串的大小
        int currentLen = strlen(buf)+1;
        //开辟堆区空间
        char * currentP = malloc(sizeof(char)*currentLen);
        //将文件读取的内容 放入到开辟的空间中
        strcpy(currentP,buf);
        //将开辟空间的数据 放入我们维护的数组中
        pArray[index++] = currentP;
        //清空buf
        memset(buf, 0, 1024);


    }


}

//打印数组
void showFileData(char **pArray,int len) {
    
    for (int i = 0; i < len; i++)
    {
        printf("%d行的数据:%s",i+1,pArray[i]);
    }
    
}


void test01() {

    //打开文件
    FILE *file = fopen("./test.txt", "r");
    if (file==NULL)
    {
        printf("文件打开失败\n");
        return;
    }
    int len = 5; // getFileLines(file);
    printf("文件有效行数为:%d\s", len);
    char ** pArray = malloc(sizeof(char *)*len);
    //将文件中的数据放入到pArray的数组中
    readFileData(file, pArray,len);
    //打印数组
    showFileData(pArray,len);

}

int main() {
    test01();

    system("pause");
    return EXIT_SUCCESS;
}

运行结果是 出现指针异常内容能正常显示
我想要不报错
  • 写回答

1条回答 默认 最新

  • X-道至简 2022-10-10 07:08
    关注

    这里有一个问题是 showFileData 里面len要输出5个子串,但是 readFileData 里面并没有保证读取5次以上

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 修改了问题 10月10日
  • 创建了问题 10月10日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助