zoukankan      html  css  js  c++  java
  • Matlab 与 c++对txt 文档的读写格式

    1. 学习g++能够读取什么格式的txt文件。

      读基本指令:

      >sprintf(filename, "doc_%d.txt", d);

      >fileptr = fopen(filename, "r");

      >while ((fscanf(fileptr, "%d ") != EOF))

      > {fscanf(fileptr, "[%d,%d]", &s1, &s2);}

      fclose(fileptr);

      写基本指令:

      >fileptr = fopen("result_1.txt", "w");

      >fprintf(fileptr, "(%d)", x);

      >fprintf(fileptr, " ");

      >fclose(fileptr);

    具体的代码及要完成的简单任务描述如下:

    // TestForReadTXT_Windows.cpp : 定义控制台应用程序的入口点。

    //,读取doc_1.txt中的n行数据,并写入vector中,这里不进行运算,直接将xy坐标写回名为result_1.txt的文件中。

    //数据在txt中的存放格式是3条轨迹以固定格式存储的轨迹数据

    //5 [3,0](448,26,11)(447,26,13)(447,27,16)(447,28,17)(448,28,20)

    //9 [0, 2](282, 101, 1436)(282, 102, 1437)(283, 102, 1440)(283, 101, 1442)(284, 101, 1445)(285, 101, 1447)(284, 101, 1448)(283, 101, 1451)(282, 101, 1455)

    //3 [0,0](407,37,678)(406,37,682)(405,37,684)

    //其中第一个代表元素个数,[]代表起止点,(x,y,t)代表轨迹信息

    #include "stdafx.h"

    #include <iostream>

    #include <vector>

    using namespace std;

    typedef struct{

        int x;

        int y;

        size_t t;

    } Point;

     

    class Trajectory{

    public:

        //Trajectory();

        size_t length;

        char source;

        char sink;

        vector<Point> d_point;

    };

    int _tmain(int argc, _TCHAR* argv[])

    {

        size_t d, i;

        int length, x, y, t, s1, s2, numTrk = 0;

        Point p;

        Trajectory* traj;

        vector<Trajectory> TD;

        char filename[100];

        FILE *fileptr;

     

        printf("load data ... ");

     

        for (d = 1; d < 2; d++){

            //sprintf(filename, "trks_grand_ss8.txt");

            sprintf(filename, "doc_%d.txt", d);

            //sprintf(filename, "parkinglot_trk.txt");

            fileptr = fopen(filename, "r");

     

            while ((fscanf(fileptr, "%d ", &length) != EOF))//原始数据中的每行第一个数代表轨迹的长度

            {

            

                traj = new Trajectory();

                fscanf(fileptr, "[%d,%d]", &s1, &s2);//原始数据中的每行第2个代表source,sink点是否被观察

                /* traj->d_source=s1;

                traj->d_sink=s2;*/

                

                for (i = 0; i < length; i++){

                    fscanf(fileptr, "(%d,%d,%d)", &x, &y, &t);

                    p.x = x; p.y = y; p.t = t;

     

                    traj->d_point.push_back(p);// (i, p, s1, s2);

     

                }

                

                fscanf(fileptr, " ");

                traj->sink = s1;

                traj->source = s2;

                traj->length = length;

                TD.push_back(*traj);

                //d_trajSet.push_back(*traj);

                //d_trajSet[numTrk].trkSource = s1;

                //d_trajSet[numTrk].trkSink = s2;

                //printf("cur TrkSource is %d, curTrkSink is %d. ", d_trajSet[numTrk].trkSource,d_trajSet[numTrk].trkSink);

                //system( "pause ");

                

                numTrk++;

                delete traj;

            }

            fclose(fileptr);

        }

        

        printf("%d trajectories are loaded. ", numTrk);

     

        fileptr = fopen("result_1.txt", "w");

        for (int k = 0; k < numTrk; k++){

          

        

            for (int w = 0; w < TD.at(k).length; w++){

            

                fprintf(fileptr, "(%d)", TD.at(k).d_point.at(w).x);

            }

            

            fprintf(fileptr, " ");

            for (int w = 0; w < TD.at(k).length; w++){

                

                fprintf(fileptr, "(%d)", TD.at(k).d_point.at(w).y);

            }

            fprintf(fileptr, " ");

     

        }

        fclose(fileptr);

        return 0;

    }

    写入result_1之后的结果如下:

     

    (448)(447)(447)(447)(448)

    (26)(26)(27)(28)(28)

    (282)(282)(283)(283)(284)(285)(284)(283)(282)

    (101)(102)(102)(101)(101)(101)(101)(101)(101)

    (407)(406)(405)

    (37)(37)(37)

     

    程序在Ubuntu中的配置:需要多加一个在vc中包含于iostream中的头文件 #include<stdio.h>

    在VC中用sprintf(filename, "..//..//..//data/doc_%d.txt", d);表征上层目录。

  • 相关阅读:
    Java中的软(弱)引用
    国庆节前夕的夜晚
    Internet连接共享只能上qq不能打开网页的问题解决
    Android多线程研究(9)——读写锁
    JavaScript开发——文件夹的上传和下载
    JS开发——文件夹的上传和下载
    B/S开发——文件夹的上传和下载
    php web开发——文件夹的上传和下载
    asp.net web开发——文件夹的上传和下载
    Java web开发——文件夹的上传和下载
  • 原文地址:https://www.cnblogs.com/simayuhe/p/7203340.html
Copyright © 2011-2022 走看看