文本内容替换 有些地方布明白 求老师注释
#include<stdio.h>#include<stdlib.h>
#include<string.h>
void stra(char * cp, int n, char * str)
//这里帮我注释下 void stra()括号里面 3个参数 越详细越好
{
int length;
//int i;
char * tmp;
length = strlen(str);
//str3比str2短,往前移动
if (length < n)
//这断代码 就这里用到了 n 这n 是指替换字符串的长度length 的差吗 那也没有计算 n的值的表达式
{
tmp = cp + n;
while (*tmp)
{
*(tmp - (n - length)) = *tmp; //n-lenofstr是移动的距离
tmp++;
}
*(tmp - (n - length)) = *tmp; //move '\0'
}
else
//str3比str2长,往后移动
if (length > n)
{
tmp = cp;
while (*tmp) tmp++;
while (tmp >= cp + n)
{
*(tmp + (length - n)) = *tmp;
tmp--;
}
}
strncpy(cp, str, length);
}
//下面的 都可以看的明白 就是上面看的有些蒙 上面的创建了一个结构体函数吗
int main()
{
char str1[1024];
char str2[100], str3[100];
//int i, len, count = 0;
//int count = 0;
int i;
char c;
char *p;
FILE *pf;
printf("\n请输入要查找的字符串和用于替换的字符串(中间用空格隔开): ");
scanf("%s", str2);
scanf("%s", str3);
//read string from news.txt
freopen("C:\\Users\\Administrator\\Desktop\\lit.txt", "r+", stdin);
//fopen("C:\\Users\\Administrator\\Desktop\\lit.txt", "r",stdin);
i = 0;
c = getchar();
while (c != EOF)
{
str1[i] = c;
i++;
c = getchar();
}
str1[i] = '\0';
//开始查找字符串str2
p = strstr(str1, str2);
while (p)
{
//count++;
//每找到一个str2,就用str3来替换
stra(p, strlen(str2), str3);
p = p + strlen(str3);
p = strstr(p, str2);
}
//printf("\ncount = %d\n", count);
printf("Result = %s\n", str1);
pf = fopen("C:\\Users\\Administrator\\Desktop\\lit.txt", "r+");
fputs(str1, pf);
fclose(pf);
system("pause");
}