C 如何表达;如果子字符串出现在字符串中,请执行某些操作;何时使用strstr?

C 如何表达;如果子字符串出现在字符串中,请执行某些操作;何时使用strstr?,c,string,bioinformatics,C,String,Bioinformatics,我正在尝试编写一个非常简单的程序,它获取一个字符串(氨基酸或核酸),检查子字符串出现的次数并输出结果 然而,我不知道如何在while-if循环中声明添加1以仅在有匹配时计数,并在到达行末尾时制动。因为strstrstr的输出是指向匹配位置的指针,所以我不知道如何将字符串等价性表示为if()的逻辑条件 #包括 #包括 int main(){ int j,计数; 字符*i,dna序列[50],期望序列[3]=“AT”; 而(1){ printf(“\n请插入蛋白质序列:\n”); 获取(dna顺序)

我正在尝试编写一个非常简单的程序,它获取一个字符串(氨基酸或核酸),检查子字符串出现的次数并输出结果

然而,我不知道如何在while-if循环中声明添加1以仅在有匹配时计数,并在到达行末尾时制动。因为strstrstr的输出是指向匹配位置的指针,所以我不知道如何将字符串等价性表示为if()的逻辑条件

#包括
#包括
int main(){
int j,计数;
字符*i,dna序列[50],期望序列[3]=“AT”;
而(1){
printf(“\n请插入蛋白质序列:\n”);
获取(dna顺序);
printf(“\n请插入搜索序列:\n”);
获取(所需的顺序);
而(1){
strstr(dna序列,所需序列);
如果(//**回答**//);
计数++;
dna_-seq[j]+;
如果(i='\0')中断;
}   
printf(“\n\n%s的精确度:%d次\n”,所需顺序,计数);
}
}

还有,你会为调试写些什么(因为我正在练习)


提前感谢您的帮助,如果问题没有明确提出,很抱歉。

strstr
返回指向您要查找的字符串出现的指针,如果不存在,则返回
NULL
。因此,您应该循环直到获得
NULL
,每次获得有效指针时,递增计数器,并从其后面开始查看:

char* loc = NULL;
while (loc = strstr(prot_seq,desired_seq)) {
    count++;
    loc++;
}

strstr
返回一个指针,指向您要查找的字符串的出现,或者
NULL
如果它不存在。因此,您应该循环直到获得
NULL
,每次获得有效指针时,递增计数器,并从其后面开始查看:

char* loc = NULL;
while (loc = strstr(prot_seq,desired_seq)) {
    count++;
    loc++;
}

strstr()
返回一个值。使用它。对不起,对编程来说是全新的。所以它基本上就是如果(strstrstr(1)){}@SiaNravoha,如果字符串是
氨基酸
,你想计算出
存在多少次?对吗?因为不清楚你问的是什么。如果输入是一个核酸序列,比如:actgatcGataCgataCgataCgataTagTagTagTatTttcGataCataTatCgataCgatgTcat,我想让程序检查子串“AT”出现的次数并输出结果。使用计数器。在AT情况下:如果有匹配项(在位置
pos
),则增加计数器。另外,您知道下一个可能的匹配(如果有)将位于
pos+2
或更高位置。(如果没有匹配,也就没有下一个匹配;-)
strstr()
返回一个值。使用它。对不起,对编程来说是全新的。所以它基本上就是如果(strstrstr(1)){}@SiaNravoha,如果字符串是
氨基酸
,你想计算出
存在多少次?对吗?因为不清楚你问的是什么。如果输入是一个核酸序列,比如:actgatcGataCgataCgataCgataTagTagTagTatTttcGataCataTatCgataCgatgTcat,我想让程序检查子串“AT”出现的次数并输出结果。使用计数器。在AT情况下:如果有匹配项(在位置
pos
),则增加计数器。另外,您知道下一个可能的匹配(如果有)将位于
pos+2
或更高位置。(如果没有匹配,也没有下一个匹配;-)