繁体   English   中英

C ++如何从函数返回char数组?

[英]C++ How do I return a char array from a function?

我正在尝试使用Vigenere Cipher。 但是,当我尝试返回数组时,输出末尾会有垃圾字符。

我究竟做错了什么?

char*   sifrele(char* metin)
{
        char* sifreliMetin = new char[static_cast<int>(strlen(metin))];

        for (int i = 0; i < strlen(metin); i++)
        {
            char sifreliHarf = metin[i] + sifreAtanamisMetin[i] - 64;

            if (sifreliHarf > 90)
                sifreliHarf -= 26;

            sifreliMetin[i] = sifreliHarf; 
        }
        return sifreliMetin;
}

这是输出:

图片

Metin是指文字,顺便说一句

文本为19个字符,但输出为23。最后4个为垃圾内容。

结合各种注释:

分配正确大小的缓冲区:

char* sifreliMetin = new char[static_cast<int>(strlen(metin) + 1)];

确保在for循环之后终止字符串:

sifreliMetin[strlen(metin)] = '\0';

strlen()不计算表示字符串结束的行尾符号。 您应该注意'\\ 0'字符以指向行结束。 所以做这样的事情:

char*   sifrele(char* metin)
    {
    int len=strlen(metin);
    char* sifreliMetin = new char[len + 1];

    for (int i = 0; i < len; i++)
    {
        char sifreliHarf = metin[i] + sifreAtanamisMetin[i] - 64;

        if (sifreliHarf > 90)
            sifreliHarf -= 26;

        sifreliMetin[i] = sifreliHarf; 
    }
    sifreliMetin[len]=0;
    return sifreliMetin;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM