饼藏子 2021-11-25 18:16 采纳率: 50%
浏览 475
已结题

编写一个C语言程序,用给定的字符串替换文件中的目标字符串,并显示输出替换的个数。

若文件为:
There are moments in life when you miss someone so much that you just want to pick them from your dreams and hug them for real!

样例输入:
you they
样例输出:
3
There are moments in life when they miss someone so much that they just want to pick them from theyr dreams and hug them for real!

请各位大佬看一下这个有什么比较简便的方法来解决吗?(C语言)

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-11-25 18:51
    关注
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAXSIZE 300
    int str_replace(char * str1, char * str2, char * str3);
    
    int main(){
        char str1[MAXSIZE];
        char str2[MAXSIZE];
        char str3[MAXSIZE];
        gets(str1);
        scanf("%s %s",&str2,&str3);
        int num=str_replace(str1, str2, str3);
        printf("%d\n",num);
        printf("%s\n",str1);
        return 0;
    }
    
    int str_replace(char * str1, char * str2, char * str3){
        int i, j, k, done, count = 0, gap = 0,num=0;
        char temp[MAXSIZE];
        for(i = 0; i < strlen(str1); i += gap){
            if(str1[i] == str2[0]){
                done = 0;
                for(j = i, k = 0; k < strlen(str2); j++, k++){
                    if(str1[j] != str2[k]){
                        done = 1;
                        gap = k;
                        break;
                    }
                }
                if(done == 0){
                    num++;
                    for(j = i + strlen(str2), k = 0; j < strlen(str1); j++, k++){ 
                        temp[k] = str1[j];
                    }
                    temp[k] = '\0'; 
                    for(j = i, k = 0; k < strlen(str3); j++, k++){ 
                        str1[j] = str3[k];
                        count++;
                    }
                    for(k = 0; k < strlen(temp); j++, k++){ 
                        str1[j] = temp[k];
                    }
                    str1[j] = '\0'; 
                    gap = strlen(str2);
                }
            }else{
                gap = 1;
            }
        }
        if(count == 0){
            printf("Can't find the replaced string!\n");
        }
        return num;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月3日
  • 已采纳回答 11月25日
  • 创建了问题 11月25日

悬赏问题

  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题