代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
//查找big串中所有smal串的位置,并把位置存放在pos中,nmb存放个数
void findstr(char*big ,char* smal,int pos[],int *nmb)
{
int i,j,lenb,lens;
lenb = strlen(big);
lens = strlen(smal);
*nmb = 0;
if(lens > lenb)
return;
i = 0;
while(i < lenb-lens+1)
{
for (j = 0; j < lens;j++)
{
if(tolower(big[i+j]) != tolower(smal[j]))
break;
}
if (j == lens) //说明找到
{
pos[*nmb] = i;
(*nmb)++;
i += lens;
}else
i++;
}
}
int main()
{
int i,nmb,shift = 0,start = 0;
char fat[50] = {0};
char sun[10] = {0};
int pos[50] = {0};
char out[100] = {0};
printf("请输入需要查找的单词:");
gets(sun);
printf("请输入句子:");
gets(fat);
findstr(fat,sun,pos,&nmb);
for (i = 0; i < nmb; i++)
{
memcpy(out+shift,fat+start,pos[i]-start);
shift += pos[i] - start;
start = pos[i] + strlen(sun);
if (pos[i] == 0)
{
memcpy(out+shift,fat+pos[i],strlen(sun));
//memcpy(out+shift,sun,strlen(sun));
shift += strlen(sun);
out[shift] = ' ';
shift+=1;
}else if (pos[i] + strlen(sun) == strlen(fat)) //最后一个
{
//判断是否有相邻,前一个不是sun,则加空格
if (pos[i] - pos[i-1] != strlen(sun))
{
out[shift] = ' ';
shift += 1;
}
memcpy(out+shift,fat+pos[i],strlen(sun));
//memcpy(out+shift,sun,strlen(sun));
}else if (pos[i] - pos[i-1] == strlen(sun)) //与前一个相邻
{
memcpy(out+shift,fat+pos[i],strlen(sun));
//memcpy(out+shift,sun,strlen(sun));
shift += strlen(sun);
out[shift] = ' ';
shift += 1;
}else
{
out[shift] = ' ';
shift += 1;
memcpy(out+shift,fat+pos[i],strlen(sun));
//memcpy(out+shift,sun,strlen(sun));
shift += strlen(sun);
out[shift] = ' ';
shift += 1;
}
}
printf("结果:%s\n",out);
return 0;
}