见下程序 char *ptrm,char *ptr_str 是不是指向那两个数组的意思??

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:44:03
#include<stdio.h>
int count(char *ptrm,char *ptr_str);
main()
{
char str[80],substr[80];
printf("母串is \n");
gets(str);
printf("子串is \n");
gets(substr);
printf("子串出现%d次!",count(str,substr));
}
int count(char *ptrm,char *ptr_str)
{
int i;
int num=0;
char *ptrs;
while(*ptrm != '\0')
{
i=0;
ptrs=ptr_str;
while(1)
{
if(*ptrs == *(ptrm+i))
{ptrs++; i++;}
else break;
if(*ptrs == '\0')
{num++; break;}
}
ptrm++;
}
return num;
}
}

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※ 还有COUNT函数中为什么要定义*ptrs,直接用*ptr_str不行吗? ※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

由于c语言没有字符串变量,而是用字符数组来表示字符串的,末尾用结尾标志'\0'来表示。
这里char *ptrm,char *ptr_str是指向一个字符串,实际上也就是字符数组。

※ 还有COUNT函数中为什么要定义*ptrs,直接用*ptr_str不行吗? ※
这里定义*ptrs指针来依次遍历ptrm中的个字符,然后和ptr_str比较。
如果非要不定义*ptrs,可以直接用ptrm,而直接用ptr_str是不可以的,原因自己可以再思考下.