[英]Read string1 within string2 and count occurences of string1 in string2
我必须用C编写一个函数,计算输入字符串中字符串“ mystring”的出现次数。
用户将输入一个包含短语“ mystring”的字符串,该字符串在字符串的任何位置都没有空格,并且程序将计算在输入字符串中读取“ mystring”的次数。
这是我到目前为止编写的代码,但是无法正常工作。
int substr_count(char *srcString, char *subString)
{
int i = 0; // counter variable
int countOccurence = 0;
while(srcString[i] != 0) // loop until hit a null in srcString
{
if (srcString[i] == subString[i])
{
countOccurence++;
}
i++; // increment to next position in srcString
}
return countOccurence; // return value of occurences
}
int main(void)
{
char srcString[200] = ""; //empty string
char subString[8] = "mystring"; //substring
int get_count = 0;
scanf("%s", srcString); //get a string from input keyboard
get_count = substr_count(srcString, subString);
printf("%s occurs %d times in %s\n", subString, get_count, srcString);
}
像这样使用strstr :
#include <stdio.h>
#include <string.h>
int substr_count(const char *srcString, const char *subString){
int countOccurence = 0;
size_t sub_len = strlen(subString);
const char *p = srcString;
while(p = strstr(p, subString)){//if NOT NULL, found it
++countOccurence;
p += sub_len;//set next search point
}
return countOccurence;
}
int main(void){
char srcString[200] = "";
char subString[] = "mystring";//const *char subString = "mystring"
int get_count = 0;
scanf("%199s", srcString);//199 : Set limits
get_count = substr_count(srcString, subString);
printf("%s occurs %d times in %s\n", subString, get_count, srcString);
}
您的代码中的问题:
声明字符串还是数组?
字符串是连续的char块,带有结尾的'\\ 0'空终止符,而数组是具有相同类型的元素的连续块。
知道字符串文字之间( " "
之间的所有内容)总是比其外观多一个元素,这一点非常重要。
"haha"
包含5个字符,“ h”,“ a”,“ h”,“ a”,“ \\ 0”
""
包含1个字符,'\\ 0',即使它看起来像是空的。
空终止符确实有所不同。 现在,如果您传入数组或char,则所有标准字符串函数都将起作用。
因此,您应该将subString
声明为初始化为“ mystring”的未定义元素数量( char subString[] = "mystring";
)
或者,您可以将subString声明为9个元素的数组,最后一个元素作为空终止符( char subString[9] = "mystring";
)
您的scanf未定义。
请在文件顶部添加“ stdio.h>”。
由于我的回答有误而将其删除
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.