用C语言编写一个从普通文本字符串中查找给定字符串(关键词)的程序。(急,求真大神解答)

用C语言编写一个从普通文本字符串中查找给定字符串(关键词)的程序。文本字符串以空字符’\0’结尾,两行之间以换行符’\x0A’分隔。要求文本字符串中跨行的字符串也要能找到。如从下列示例文本
This is an exa
mple of text str
ing with LF.
中应能找出关键词“example”和“string”。
要求找出所有重复出现的关键词,并将每次出现的位置(关键词首字符在文本字符串中的下标,首字符下标规定为0)记录在一个线性表result_list中。如从上面的示例文本中查找关键词“is”,应能找到2次,并记录位置2和5。
result_list只需选择一种标准的线性表,所用到的关于result_list的操作只需给出函数原型(要求函数命名及参数符合习惯),无需具体写出定义。
只需在白纸上分别写出如下框架中A/B/C部分的内容即可。

#include<stdio.h> // 可用printf输出错误信息
#include“list.h” // result_list 的操作函数
char*ReadText(); // 假设函数定义已存在
...// A部分:函数声明、类型定义等 char*p_keystr;
main()
{
char* p_text;
// 以下读取文本并存放在p_text指向的字符串中
p_text = (char*)malloc(GetFileLength(“data.txt”)+1);
ReadText(p_text, “data.txt”);
... // B部分:自己的主程序代码
free(p_text);
}
...// C部分:函数定义

问题是这样:C语言编写函数int fun(char *s,char *c), 函数的功能是查找母串s中,字串c出现的次数.
答案是这样:
#include<stdio.h>
#include<string.h>
int fun(char*s,char*c)
{
int i=0,j=0,k,n=strlen(c),a=0;
while(s[i])
{
if(s[i]==c[j])
{ for(k=1;(s[i+k]&&c[i+k])&&(s[i+k]==c[j+k]);k++);
if(k==n)
a++;
i+=n;
}
else
i++;
}
return a;
}
void main()
{
char s[40],c[20];
int m=0;
gets(s);
gets(c);
m=fun(s,c);
printf("%d\n",m);
}
你把它改为文件不就行了!你也是知道的算法思想是一样的!
温馨提示:答案为网友推荐,仅供参考
相似回答