Ori*_*ber 0 c string file count
我正在尝试编写一个获取字符串的程序,并计算在特定文件中找到该字符串的次数.
该文件目前是:你好我的名字你好oria我喜欢你好编程
而我所说的这个词是你好.
这是我的代码
int num_of_words(FILE* stream,char* str)
{
int count=0,i=0,length;
char c;
rewind(stream);
length=strlen(str);
do
{
c=fgetc(stream);
while(c==*(str+i))
{
c=fgetc(stream);
i++;
if(i==length)
{
count++;
i=0;
}
}
i=0;
}while(c!=EOF);
return count;
}
Run Code Online (Sandbox Code Playgroud)
这个想法是有一个叫做i的索引,只有当字母之间有匹配时它才会前进.如果我达到字符串的长度,那么这意味着我们连续发现了所有字母,并且我将计数提高了一个.
出于某种原因,它总是返回零.
小智 7
II.不要重新发明轮子-有该strstr()功能在C标准库,帮助你找到另一个字符串的子串.
我宁愿将文件读入缓冲区,然后使用以下函数.如果文件不是太大,这应该不是问题.
int count(const char *haystack, const char *needle)
{
int n = 0;
const char *p = haystack;
size_t len = strlen(needle);
while (p = strstr(p, needle)) {
n++;
p += len;
}
return n;
}
Run Code Online (Sandbox Code Playgroud)