小小小小菜鸡 2018-05-25 09:03 采纳率: 100%
浏览 2699

字符串出现乱码,c++小萌新求助

运行后出现乱码。图片说明
图片说明

 #include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;

void rep(char *str,char *fstr,char *rstr)
{
    int i,j,k,n,x,y=0,cnt=0;
    char sss[50];
    n=strlen(fstr);
    x=strlen(rstr);
    for(i=0;str[i]!='\0';i++) {
        if(str[i]==fstr[0]) {
                k=1;
                j=i+1;
            while(j<i+n) {
                 if(str[j]==fstr[k]) {
                    j++;
                    k++;
                 }
                 else break;
            }
            if(j==i+n) {
               strcat(sss,rstr);
               cnt++;
               i=j-1;
               y=j+(x-n)*cnt-1;
            }
        }
        else sss[y]=str[i];
        y++;
    }

    sss[y]='\0';
    strcpy(str,sss);
}
int main()
{
    char str[50]="iffordowhileelsewhilebreak";
    char fstr[10]="while";
    char rstr[10]="struct";
    /*gets(str);
    gets(fstr);
    gets(rstr);*/
    rep(str,fstr,rstr);
    cout<<str<<endl;
    return 0;
}

  • 写回答

7条回答 默认 最新

  • threenewbee 2018-05-25 09:13
    关注
     #include <iostream>
    #include <string.h>
    #include <cstdio>
    using namespace std;
    
    void rep(char *str,char *fstr,char *rstr)
    {
        int i,j,k,n,x,y=0,cnt=0;
        char sss[50];
        memset(sss, 0, 50); //加上这个
        n=strlen(fstr);
        x=strlen(rstr);
        for(i=0;str[i]!='\0';i++) {
            if(str[i]==fstr[0]) {
                    k=1;
                    j=i+1;
                while(j<i+n) {
                     if(str[j]==fstr[k]) {
                        j++;
                        k++;
                     }
                     else break;
                }
                if(j==i+n) {
                   strcat(sss,rstr);
                   cnt++;
                   i=j-1;
                   y=j+(x-n)*cnt-1;
                }
            }
            else sss[y]=str[i];
            y++;
        }
    
        sss[y]='\0';
        strcpy(str,sss);
    }
    int main()
    {
        char str[50]="iffordowhileelsewhilebreak";
        char fstr[10]="while";
        char rstr[10]="struct";
        /*gets(str);
        gets(fstr);
        gets(rstr);*/
        rep(str,fstr,rstr);
        cout<<str<<endl;
        return 0;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题