C 语言 查找一个字符串2在字符串1中出现的次数

如题所述

#include <stdio.h>

#include <windows.h>

int main()

{

   char a[100], b[100];

   char *temp;

   int counter = 0;

   memset( a, sizeof(a), 0 ); //清空内存
 
   memset( a, sizeof(b), 0 ); //清空内存
      
   printf( "Please input source string: " );

   gets(a); //从缓冲区获取源字符串. 
 
   printf( "Please input find string: " );

   gets(b); //从缓冲区获取查找字符串. 
 
   temp = a; //将源字符串赋给指针操作.
 
   while( temp )
 
   {

      temp = strstr( temp, b ); //在源字符串中查找
//第一次出现的位置,找到返回所处位置,未找到返回NULL. 
      if( temp != NULL ) //如果能找到
//,指针偏移查找字符串的长度,然后继续循环,直到查找完成. 
      {

         temp += strlen(b);
 
         counter++;

      }

   }

   printf( "find %d times!\n", counter ); //输出找到的个数.
 
   system("pause");

   return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-12
#include <stdio.h>
#include <string.h>


int main()
{

int findCount(char *str1,char const*str2);


printf("%d",findCount("123412","12"));

 
return 0;
}

/**
查找str1中str2出现的次数
*/
int findCount(char *str1,char const*str2)
{

int count=0;
char *ptmp=str1;

while((ptmp=strstr(ptmp,str2))!=NULL)
{
   ptmp+=strlen(str2);
count++;
}

return count;

}

第2个回答  2014-08-12
#include <stdio.h>
#include <stdlib.h>

int main()
{
//printf("Hello world!\n");

char str1[] = {"asdasasdsfduahasdfd"};

char str2[] = {"asd"};

int i, j, n = 0, t;

for (i = 0; i < sizeof(str1) - 1; i++)
{
t = i;
for (j = 0; (j < sizeof(str2) - 1) && (i < sizeof(str1) - 1); j++)
if (str1[t++] != str2[j])
break;
i += j;

if (j == (sizeof(str2) - 1))
n++;

}

printf("%d", n);

return 0;
}
第3个回答  2018-03-15
if判断里面 temp应该++ 不然会漏次数
比如 a 是ossosso
b是 osso 如果按照你的算法少算了一次
第4个回答  2014-08-12
你要的是程序代码还是什么?

C语言查找字符串2在字符串1中出现的次数,列入输入abcdabcd 在输入ab...
include <stdio.h># include <string.h>int main(void){ char ch[1000]; char ch1[1000]; int i, j; char *p; printf("Please enter the string1:"); scanf("%s", ch); printf("Please enter the string2:"); scanf("%s", ch1); p = malloc(strlen(...

求解,用C语言编写一个程序,查找一个字符串在另一个字符串中出现的次数...
String key=String.valueOf((str.charAt(i)));\/\/判断该字符在map中是否存在 if(!maps.containsKey(key))\/\/如果不存在,将key(该字符)与value(出现的次数)存到map中 maps.put(key,1);else{ \/\/如果存在,将该字符对应的value取出 int val=maps.get(key);\/\/给该字符所对应的value+1 maps...

...指定的字符,并输出指定字符在字符串中出现的次数和位置
public static void main(String[]args){ System.out.println("请输入你要判断的字符串:");Scanner s=new Scanner(System.in);String str=s.nextLine();char[]ch=str.toCharArray();Arrays.sort(ch);\/\/对数组排序 char max='a';\/\/记录出现次数最多元素 int maxcount=0;\/\/记录最大出现次数 ...

求一个c语言程序,要求输入两个字符串,可以显示出第二个字符串在第一个...
else {printf("字符串2在字符串1中出现%d次,起始位置分别是:",i);for(j=0;j

用c语言怎么统计字符串中某一字符出现的次数
1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.例:concat(‘11’,'aa’)='11aa’;2、求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。例:copy(‘abdag’,2,3)=’bda’3、删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的...

用C语言编写一个程序,输入一个字符串,统计其中各个字符出现的次数_百 ...
printf("空格个数:%d\\n其他字符个数:%d\\n", emp_count, els_count);return 0;} 这个程序通过遍历输入字符串,根据字符的ASCII值来判断其类型并统计出现次数。如果你想进一步优化,可以使用`ctype.h`库中的`isspace()`函数来判断空白字符。例如:c include ...while(*p) { if(*p >= '0' ...

c语言统计字符串中每个字符出现的次数
if(*(p+1)==0||*(p+1)==10)\/\/如果已经到了子串的末尾 { n++;\/\/自增 p=s;\/\/重新指向子串 break;\/\/退出 } } } return n;} int main(void){ char a[81],b[81];\/\/定义两个字符数组 printf("输入原字符串:");fgets(a,81,stdin);\/\/输入 printf("输入子字符串:");fgets(b...

C语言程序求debug:统计一个字符串在另一个字符串中出现的次数。
输入格式不对和输入缓冲区太小,字符串,是以\\0为结果,但不一定不含空白符,scanf()的%s只输入不含空白符的,会在空白符处断做多个串,测试数据可能是一段文本,很多个单词 长度可以远越过101字节 char a[10240],b[10240];\/\/一个串长达10K,足够了 while(scanf("%s%s",&a,&b)!=EOF)\/\/...

急求!!c语言编写函数实现统计一个字符串中字母出现的次数。
void main(){ char getChar[100];char x;int total = 0;\/\/用来记录字母出现的次数 printf("请输入字符串:");scanf("%s", getChar);\/\/这里接收字符串。接收字符串不要加地址符 & ,因为数组名就是地址(这个知道就行)printf("请输入需要统计的字母:");scanf("%s", &x);for (int ...

c语言中如何在一个字符串中查找\/出现的位置?需要第一次出现和第二次出 ...
可以使用strstr()函数查找特定字符串在目标字符串中第一次出现的位置,然后用memcpy()函数截取字符串,再使用strstr()函数查找出现位置,两次结果指针之间的字符串就是特定字符之间的字符串,希望能帮到你~

相似回答