c - 使用strstr时如何表示 "if substring present in string do something"?

标签 c string bioinformatics

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

但是,我不知道如何在 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/

相关文章:

C - 无法正确循环 fputs 和 fprintf。预期输出完全错误

java - 批量替换char

python - 如何在 python 中生成所有可能的排列?

python - 如何计算具有多种模型/构象的蛋白质的平均结构

r - 在 R 中分析 SVM (e1071)

c - 作为参数接收的指针

c++ - GCC 内联汇编中的标签

c - 读取 utf8 字符串并将其写入文件

java - 当我的代码运行时,我似乎得到一个空值

javascript - 在 javascript/jquery 中删除字符串的一部分?