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