注册 登录
编程论坛 C语言论坛

文本内容替换 有些地方布明白 求老师注释

lwy2019 发布于 2019-10-15 11:09, 1096 次点击
#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");
}
0 回复
1