我想用 C 语言从一个文本文件中计算基因的数量,一个三元组是一组 3 个字母。基因由包含开头和结尾的三联体序列组成。
基因开头: ATG
基因末端: TAA、TGA 或 TAG
如果开始和结束之间的至少一个三元组(例如 TAA ATG)不是有效基因,则认为该基因是有效的
文本文件示例,文本文件可以有多行
ATG GCA TAT ATG TGG AAG TAA GTT GTA ATG CAC GAT GGC AAC GGC GGC TAG CCA ATG AAA
这个例子包含两个基因
我试了至今,不知道如何找到开头然后结尾。
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;
}
请帮帮我!:)