我正在尝试编写一个非常简单的程序,它接受一串字符(氨基酸或核酸)并检查子字符串出现了多少次并输出结果。
但是,我不知道如何在 while if 循环中声明仅在匹配时才加 1 并在到达行尾时停止。由于 strstr 的输出是指向匹配位置的指针,我不知道如何将字符串等价表示为 if() 的逻辑条件。
#include<stdio.h>
#include<string.h>
int main(){
int j,count;
char *i,dna_seq[50], desired_seq[3]="AT";
while(1){
printf("\nPlease insert protein sequence:\n");
gets(dna_seq);
printf("\nPlease insert searched sequence:\n");
gets(desired_seq);
while(1){
strstr(dna_seq,desired_seq);
if(//**answer**//);
count++;
dna_seq[j]++;
if(i=='\0') break;
}
printf("\n\nOccurance of %s: %d times\n",desired_seq,count);
}
}
另外,您会为调试编写什么(因为我正在尝试练习)?
预先感谢您的帮助,如果问题没有明确提出,我们深表歉意。
最佳答案
strstr
返回指向您要查找的字符串出现的指针,如果不存在则返回 NULL
。所以你应该循环直到你得到 NULL
,每次你得到一个有效的指针,递增计数器,并从它后面开始查找:
char* loc = NULL;
while (loc = strstr(prot_seq,desired_seq)) {
count++;
loc++;
}
关于c - 使用strstr时如何表示 "if substring present in string do something"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189478/