m0_69114617 2022-04-18 20:05 采纳率: 60%
浏览 50
已结题

利用链表无法读取文件

#include <stdio.h>
#include <tchar.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
#pragma warning(disable:4996)
#define pi 3.1415926

typedef struct point {
    int ID;            //点的ID
    double x, y, z;    //点的x,y,z
}Point;

/* TIN - 点三角形组织方式 */
typedef struct triangle_PT {
    int ID;        //三角形的ID
    int A, B, C;    //三角形的三个顶点
}Triangle_PT;
typedef struct TIN_PT
{
    Point *p;        //点集
    Triangle_PT *tris;    //边集
    int pointNum;        //点数
    int triNum;            //三角形个数
}TIN_PT; //点、三角形组织方式


int ReadTIN_PTFile(char *filename, TIN_PT *tin)
{
    int i,j;
    char fp[10000];
    tin->p = (Point *)malloc(sizeof(Point) * tin->pointNum);//这一步麻烦讲解一下是什么
    ifstream dm(filename);
    if (!dm)
    {
        printf("cannot got it\n");
        exit(0);
    }
    for (j = 1; j < 30; j++)
    {
        dm.getline(fp, 128, '\n');
        for (i = 1; i < 30; i++)
        {
            if (fp[i] == '\0')
                break;
            if (fp[i] == ',')
                fp[i] = ' ';
        }
        sscanf_s(fp, "%s %lf %lf %lf", &tin->p[j].ID, &tin->p[j].x, &tin->p[j].y, &tin->p[j].z);
    }
    return 1;
}



int main()
{
    TIN_PT tin1;
    ReadTIN_PTFile("C:\\Users\\86159\\Desktop\\get\\TIN数据.txt", &tin1);//自行修改路径
    system("pause");
    return 0;
}

无法读取文件,老是中断,不知道问题出在哪里,麻烦讲解一下(标注的地方也讲解一下)
文件网盘(供调试使用):链接: https://pan.baidu.com/s/1Jvz5zeaG1FPeDGTBWPc_Cg?pwd=cg8j
提取码: cg8j

  • 写回答

3条回答 默认 最新

  • 关注

    注释的那一行是给p申请内存空间,空间大小是sizeof(Point) * tin->pointNum
    你的代码修改如下(修改的地方有注释,另外,你的数据文件名改成英文,先不要带汉字):
    修改后的运行结果:

    img

    代码:

    #include <iostream>
    #include <fstream>
    using namespace std;
    #pragma warning(disable:4996)
    #define pi 3.1415926
    
    typedef struct point {
        int ID;            //点的ID
        double x, y, z;    //点的x,y,z
    }Point;
    
    /* TIN - 点三角形组织方式 */
    typedef struct triangle_PT {
        int ID;        //三角形的ID
        int A, B, C;    //三角形的三个顶点
    }Triangle_PT;
    typedef struct TIN_PT
    {
        Point *p;        //点集
        Triangle_PT *tris;    //边集
        int pointNum;        //点数
        int triNum;            //三角形个数
    }TIN_PT; //点、三角形组织方式
    
    
    int ReadTIN_PTFile(char *filename, TIN_PT *tin)
    {
        int i,j;
        char fp[10000];
        tin->p = (Point *)malloc(sizeof(Point) * tin->pointNum);//这一步麻烦讲解一下是什么
        ifstream dm(filename);
        if (!dm.is_open())
        {
            printf("cannot got it\n");
            exit(0);
        }
        for (j = 0; j < 30; j++) //修改 从0开始
        {
            dm.getline(fp, 128, '\n');
            for (i = 0; i < 30; i++) //从0开始
            {
                if (fp[i] == '\0')
                    break;
                if (fp[i] == ',')
                    fp[i] = ' ';
            }
            //修改
            sscanf_s(fp, "P%d %lf %lf %lf", &tin->p[j].ID, &tin->p[j].x, &tin->p[j].y, &tin->p[j].z);
        }
        dm.close();
        return 1;
    }
    
    
    
    int main()
    {
        TIN_PT tin1;
        tin1.pointNum = 30; //修改,初始化pointNum的值
        ReadTIN_PTFile("D:\\TIN.txt", &tin1);//自行修改路径
        
        //测试
        for (int i = 0;i<30;i++)
        {
            printf("%d %lf %lf %lf\n",tin1.p[i].ID,tin1.p[i].x,tin1.p[i].y,tin1.p[i].z);
        }
    
    
        system("pause");
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改