c++ - 将 char[] 传递给另一个函数时出现奇怪的输出

标签 c++ arrays function

我正在尝试将 char[] 传递给另一个函数,但出于某种原因,我不断收到奇怪的输出,但没有错误。我有以下方法:

void storeKey()
{
    char keyArray[10];
    cout << "Please enter 10bit key" << endl << "==> ";
    cin >> keyArray;
    storePlaintext(keyArray);
    cout << keyArray << endl;
}

void storePlaintext(char key[])
{
    char plaintextArray[8];    
    cout << "Please enter 8bit plaintext" << endl << "==> ";
    cin >> plaintextArray;

    cout << plaintextArray << endl << key[1] << endl;
    //cout << plaintextArray << endl << key << endl;
}

我应该在下一行打印出:00000000 和 1111111111,然后是 1111111111 但我得到 0000000,然后是“c”(或随机数),然后是 111111111。为什么会这样?我应该能够像我一样毫无问题地传递数组,对吧?我需要能够将数组从函数传递到函数并使用其中的数据。任何帮助都感激不尽。谢谢

最佳答案

使用std::string

#include <string>
#include <fstream>
#include <iostream>

using namespace std;

void storePlaintext(const string& key);

void storeKey()
{
    std::string keyArray;
    cout << "Please enter 10bit key" << endl << "==> ";
    getline(cin,  keyArray);
    storePlaintext(keyArray);
    cout << keyArray << endl;
}

void storePlaintext(const string& key)
{
    string plaintextArray;    
    cout << "Please enter 8bit plaintext" << endl << "==> ";
    getline(cin, plaintextArray);
    if ( key.size() > 1 ) 
        cout << plaintextArray << endl << key[1] << endl;
}

注意 std::stringstd::getline 的使用,以及通过 (const) 引用传递参数。此外,检查以确保 key 具有超过 1 个字符,因为使用长度为 1 或更短的字符串访问 key[1] 是未定义的行为。

关于c++ - 将 char[] 传递给另一个函数时出现奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25955776/

相关文章:

c++ - 如何从函数返回类成员的指针

c++ - 模板的两个指针之间的差异

c# - 如何处理数字文件c#

c - 从 c 中的函数返回二维数组时出错

c++ - 具有嵌套模板类的模板类,g++ 编译正常,vs2013 不会编译

c++ - 用于查找指针何时超出范围的程序和技术

javascript - 如何从 JavaScript 中的对象数组中获取重复值?

java - 在 Java 中删除二维数组中的空元素

具有传递 __set__ 命令的 Python 数据描述符

c - 使用函数增加动态数组大小;无错误,下一个尺寸无效(快)