不知道为什么会多输出软七八糟的字符

img


#include 
#include 
#include 

using namespace std;

int main(){
    char str[20],substr[5];
    while(cin >> str,cin >> substr){
    char max=str[0];
        int x;
        for(int i=0,len=strlen(str);iif(str[i]-max>0){
                x=i; 
                max=str[i]; 
            }
        }
        for(int i=strlen(str);i>x;i--){
             str[i+2]=str[i-1];
        }
        for(int i=0;i<3;i++,x++){
              str[x+1]=substr[i];
        }
        for(int i=0,len=strlen(str);i

img

img

img

插入后没有进行'\0'赋值,导致字符串输出长度不明确。

因为你声明数组的时候没有初始化,导致拼接完字符串后的字符串没有正常结束,cout也就不能正常输出。

img

代码修改如下


#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int main() {
    char str[20] = { 0 }, substr[5] = { 0 }; //修改1
    while (cin >> str, cin >> substr) {
        char max = str[0];
        int x=0;//修改2
        for (int i = 0, len = strlen(str); i < len; i++) {
            if (str[i] - max > 0) {
                x = i;
                max = str[i];
            }
        }
        for (int i = strlen(str); i > x; i--) {
            str[i + 2] = str[i - 1];
        }
        for (int i = 0; i < 3; i++, x++) {
            str[x + 1] = substr[i];
        }
        for (int i = 0, len = strlen(str); i < len; i++) {
            cout << str[i];
        }
        cout << endl;
    }
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632