文件内容段落随机化(DNA片段序列随机化) & C/C++源码

需要读取的文件:non-hs

打乱后的文件:non-randed_data1

//代码功能:将一个文件各段落随机后写入另外一个文件。
//实例:DNA片段序列随机化。
//每个DNA序列第一行为该序列名称,之后为DNA序列,每两个DNA序列之间用一空白行分割。如读取文件non-hs.txt
//该代码能将一个文件中所有DNA片段序列顺序打乱然后写入到另外一个文件,格式不变。如打乱后写入的文件non-randed_data1.txt
#include<fstream>
#include<algorithm>
#include<vector>
#include<iostream>
#include<string.h>
using namespace std;
#define NUM 280
#define NON_NUM 737   //读取文件段落数

int main()
{
    ofstream outfile("E:\\code\\non-randed_data1.txt");
    vector <int> index;
    int i,j,k;
    char str1[1000];
    string sequenceName,DNAsequence,tempStr;
    for(i=1;i<=NON_NUM;++i)
        index.push_back(i);
    random_shuffle(index.begin(),index.end());//乱序
    for(i=0;i<NON_NUM;++i)//将原文件乱序写入另一个文件
    {
        //cout<<index[i]<<" ";     //index[i]表示将原文件第index[i]段内容写入到新文件第i+1段
        ifstream infile("E:\\code\\non-hs.txt");
        sequenceName.clear();
        DNAsequence.clear();
        tempStr.clear();
        for(j=1;j<index[i];++j)//读取前index[i]-1段
        {
            infile.getline(str1,100);
            //cout<<str1<<endl;
            while(strlen(str1)!=0){//读取的是否为空白行
                infile.getline(str1,100);
            //cout<<str1<<endl;
            }
        }
        infile.getline(str1,100);//读入第index[i]段
        //cout<<str1<<endl;
        while(strlen(str1)!=0){
            for(j=0;j<strlen(str1);j++)//获取写入内容第一行
            {
                outfile.put(str1[j]);
            //cout<<str1[j];
            }
            //cout<<endl;
            outfile<<endl;
            strcpy(str1,"\n");
            infile.getline(str1,100);
        }
        outfile<<endl;
    }

    cout<<endl;

    return 0;
}