作业帮 > 综合 > 作业

C语言文件中单词的查找与替换

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/24 13:22:48
C语言文件中单词的查找与替换
C语言文件中单词的查找与替换
/*
功能:查找替换函数
返回值:替换后的字符串 strretu
*/
char *Replace(char *str,char *str1,char *str2,char *strretu)
{
char *str_temp = str; //源字符串
char *str1_temp = str1; //要求替换的字符串
char *str2_temp = str2; //替换成字符串
char *strretu_temp = NULL;//目标字符串
unsigned long char_size = (unsigned long)sizeof(char);
/*计算字符长度*/
unsigned long i,j,rep_acc = 0;
unsigned long str_len = strlen(str);
unsigned long str1_len = strlen(str1);
unsigned long str2_len = strlen(str2);
/*首先找出Str里有几个地方要被替换的*/
for(; str_temp - str < str_len; )
{
for(i = 0; i < str1_len; i++)
{
if(*str_temp++ != *str1_temp++)
{
str1_temp = str1;
break;
}
else
{
if(i == str1_len - 1)
{
str1_temp = str1;
rep_acc++;//找到了
}
}
}
}
str1_temp = str1;
str_temp = str;
/*分配所需内存*/
strretu = strretu_temp = malloc(((str_len - str1_len * rep_acc) + str2_len * rep_acc + 1) * char_size);
/*替换*/
for(; str_temp - str < str_len; )
{
for(i = 0; i < str1_len; i++)
{
*strretu_temp++ = *str_temp;
if(*str_temp++ != *str1_temp++)
{
str1_temp = str1;
break;
}
else
{
if(i == str1_len - 1)
{
strretu_temp = strretu_temp - str1_len;
for(i = 0; i < str2_len; i++)
{
*strretu_temp++ = *str2_temp++;
}
str2_temp = str2;
str1_temp = str1;
}
}
}
}
*strretu_temp = '\0';
str1_temp = str1;
str_temp = str;
str2_temp = str2;
return(strretu);
}
读取文件的,你就自己写了,这个查找替换