0
我有兩個FASTA文件:連接兩個FASTA文件中C++
file1.fasta
>foo
ATCGGGG
>bar
CCCCCC
file2.fasta
>qux
ATCGGAAA
我想現在做的是它們串聯成顯示結果的一個文件:
>foo
ATCGGGG
>bar
CCCCCC
>qux
ATCGGAAA
因此保留以「>」開頭的每個序列的名稱。 目前我下面的代碼替換該名稱索引,即:
>0
ATCGGGG
>1
CCCCCC
>0
ATCGGAAA
什麼是以下修改我的代碼,以正確的方式?
#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
#include<stdio.h>
#include<string>
using namespace std;
#define MAX_LINE_SIZE 1024
int mk_joint_file(char *ctrlFile, char *tgtFile, char *outFile){
char s[MAX_LINE_SIZE];
FILE *ofp = fopen(outFile,"w");
FILE *cfp = fopen(ctrlFile,"r");
FILE *tfp = fopen(tgtFile,"r");
// char *p;
int flg=false;
int line=0;
while(fgets(s,MAX_LINE_SIZE,cfp) != NULL){
if(s[0]=='>'){
flg=true;
fprintf(ofp,">%d\n",line);
line++;
}else{
if(flg==true){
fprintf(ofp,"%s",s);
}
flg=false;
}
}
flg=false;
line=0;
while(fgets(s,MAX_LINE_SIZE,tfp) != NULL){
if(s[0]=='>'){
flg=true;
fprintf(ofp,">%d\n",line);
line++;
}else{
if(flg==true)
fprintf(ofp,"%s",s);
flg=false;
}
}
fclose(cfp);
fclose(tfp);
fclose(ofp);
return(0);
}
int main(int argc, char **argv)
{
string ifname_control = argv[1];
string ifname_target = argv[2];
string ofname = "newjoin.txt";
mk_joint_file((char *)ifname_control.c_str(), (char *)ifname_target.c_str(), (char *)ofname.c_str());
}
你需要編寫一個程序爲了這?您可以連接命令行/ shell中的兩個文本文件。在Windows命令提示符處,您可以說'copy file1.fasta + file2.fasta newjoin.txt'。 – Blastfurnace 2012-04-04 03:29:26