【发布时间】:2012-10-22 17:11:42
【问题描述】:
我想用 C 语言从一个文本文件中计算基因的数量,一个三元组是一组 3 个字母。 基因由包含开头和结尾的三联体序列组成。
基因的开始: ATG
基因末端: TAA、TGA 或 TAG
如果开始和结束之间的至少一个三元组(例如 TAA ATG)不是有效基因,则认为该基因有效
文本文件示例,文本文件可以有多行
ATG GCA TAT ATG TGG AAG TAA GTT GTA ATG CAC GAT GGC AAC GGC GGC 标签 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;
}
请帮帮我! :)
【问题讨论】:
-
请不要将 stackoverflow 误解为“DoMyWork”。从读取 c 中的文件开始,然后继续询问您在编写代码时遇到的问题。
-
似乎这将是一个微不足道的正则表达式。尝试这种方法,如果您无法使正则表达式正常工作,请返回。
-
对不起,我把我目前的代码,我不知道如何在开始后找到基因的结尾