【求助】统计子字符串在另一个字符串中出现次数问题
											初学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 编辑 ]

 
											





 
	    

