| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7866 人关注过本帖
标题:【求助】统计子字符串在另一个字符串中出现次数问题
只看楼主 加入收藏
fnbxd
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-5-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
【求助】统计子字符串在另一个字符串中出现次数问题
初学C语言,为考计算机三级上机,头都疼了,这有个上机题目,答案都有了,就是有点看不懂,想请论坛里的大侠们帮我注释一下程序里的函数findStr(),万分感谢!
题目如下:
请编写一个函数findStr(),其功能是:统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:如果输入的字符串为“abkl dwafhjj dafaf safs fs4ddafadkl”,子字符串为“af”,函数的返回值应为5。
整个试题如下(包括答案):
程序代码:
#include <stdio.h>
#include <string.h>
#include <conio.h>
int findStr(char *str, char *substr)  /*这边的两个形参有没有给指针赋值?*/
{
    int  n;
    char  *p, *r;
    n = 0;
    while (*str)  /*这边的意思是不是“当*str值为真的时候?如果是,什么情况下为真呢”*/
    {
        p = str;
        r = substr;
        while (*r)
            if (*r == *p)
            {
                r++;
                p++;
            }
            else
            {
                break;
            }
        if (*r == '\0')
            n++;
        str++;
    }
    return n;
}
void ReadWrite()
{
    char  str[81], substr[10], ch;
    int  n, len, i = 0;
    FILE  *rf, *wf;
    rf = fopen("in.dat", "r");
    wf = fopen("out.dat", "w");
    while (i < 25)
    {
        fgets(str, 81, rf);
        fgets(substr, 10, rf);
        len = strlen(substr) - 1;
        ch = substr[len];
        if (ch=='\n' || ch==0x1a)
            substr[len] = 0;
        n = findStr(str, substr);
        fprintf(wf, "%d\n", n);
        i++;
    }
    fclose(rf);
    fclose(wf);
}
main()
{
    char str[81], substr[10];
    int n;
    printf("输入原字符串:");
    gets(str);
    printf("输入子字符串:");
    gets(substr);
    puts(str);
    puts(substr);
    n = findStr(str, substr);
    printf("n=%d\n", n);
    ReadWrite();
}

 

[ 本帖最后由 fnbxd 于 2010-6-3 10:07 编辑 ]
搜索更多相关主题的帖子: 计算机三级 字符串 C语言 统计 
2010-06-03 10:05
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:10 
首先,这是一个KMP字符串匹配算法。
首先,两个形参赋值了,再调用该函数时传递参数进去的。
第二个问题,*str为真问题。首先,传的是字符串,str是字符串指针,那么*str则是str地址的那个字符,字符串是以'\0'结尾的,而while(*str)等价于
while(*str != '\0')

即未到字符串结尾时是真,如果到了结尾则是假。
2010-06-03 10:26
fnbxd
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-5-9
收藏
得分:0 
非常感谢Kid_X
2010-06-03 10:41
pccpu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-11-29
收藏
得分:0 
回复 2楼 Kid_X
自定义函数表示的是什么意思
2016-11-29 09:27
快速回复:【求助】统计子字符串在另一个字符串中出现次数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026484 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved