复制数组时出现随机垃圾

问题描述 投票:0回答:3

当我运行该程序时,它运行良好,但是由于某种原因,我在输出中出现了随机垃圾。如果我输入的字符串大于11个字符,我将开始出现随机垃圾,如果我输入的字符串小于11个字符,则不会出现随机垃圾,看起来还不错...

这里是错误enter image description here的图片>>

#include <iostream>

using namespace std ;

int main ()
{
    //Declare and initialize variables
    char str1 [100], str2 [100] ;
    int i, y ;

    //Top display
    cout << endl
    << "Copy one string to a second string\n"
    << "----------------------------------\n" ;

    //Read user input
    cout << "Please enter a string: " ;
    cin.getline (str1 , sizeof (str1) ) ;
    cout << endl ;

    //Make copy using strcpy
    for ( i = 0 ; str1[i] != '\0'; i ++ )
    {
        str2[i] = str1[i] ;
        cout << i << "  " ;
    }


    y = sizeof (str2) ;

    //Display results
    cout << endl
    << "Str1: " << str1 << " has been copied into str2: " << str2 << endl
    << "y: " << y << endl ;


    return 0 ;
}

当我运行该程序时,它运行良好,但是由于某种原因,我在输出中出现了随机垃圾。如果输入的字符串大于11个字符,并且输入的字符少于11个,我将开始出现随机垃圾...

c++ arrays null copying
3个回答
0
投票

它的工作原理。尝试在for块的末尾和y=sizeof之间添加以下内容以帮助调试


0
投票

您只需声明两个字符串就可以用更少的代码来解决这个问题。然后将字符串2设置为字符串1。


0
投票

您不可以将新字符串终止。循环后这样的事情将达到目的:

© www.soinside.com 2019 - 2024. All rights reserved.