C言語を使ってテキストファイルから遺伝子の数を数えたいのですが、トリプレットは3文字のセットです。遺伝子は、開始と終了を含む一連のトリプレットで構成されています。
遺伝子の始まり: ATG
遺伝子の末端: TAA、TGA または TAG
開始と終了の間の少なくとも 1 つのトリプレット (TAA ATG など) が有効な遺伝子でない場合、遺伝子は有効と見なされます。
テキスト ファイルの例。テキスト ファイルには複数の行を含めることができます。
ATG GCA TAT ATG TGG AAG TAA GTT GTA ATG CAC GAT GGC AAC GGC GGC TAG CCA ATG AAA
この例には 2 つの遺伝子が含まれています
これまで試してみましたが、最初と最後を見つける方法がわかりません。
int Count (char *file) {
FILE *ptr = NULL;
int count = 0;
char *start = "ATG";
char *end = "TAA"; // miss TGA, TAG
char chr;
int occur, i;
ptr = fopen(filename, "r"); //open text file
if (ptr == NULL)
return -1;
chr = fgetc(ptr);
while(chr != EOF){
if(ch == start[0]){
for(i=1; i< StrLen(start); i++){
chr = fgetc(ptr);
if(chr == EOF){
occur = 0;
break;
}
else if(chr != start[i]){
chr = fgetc(ptr);
occur = 0;
break;
}
else
occur = 1;
}
if(occur == 1){
count++;
}
} else{
chr = fgetc(ptr);
}
}
if (!feof(ptr)){
return -1;
}
fclose(ptr);
return count;
}
int StrLen(char *word){
int i = 0;
char c = word[0];
while(c != '\0'){
i++;
c = word[i];
}
return i;
}
お願い助けて!:)