c ++数组返回错误字符

时间:2015-10-10 22:29:20

标签: c++ arrays pointers

目前,以下代码存在问题,返回一个数字,并在末尾附加符号。这是我能获得的最小代码,以便重现错误。是什么导致了这个问题?我假设也许数组在某种程度上得到数字被解释为ascii符号,但我无法弄清楚这是怎么回事。

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

const int numRow = 6;
const int numCol = 26;

char letters[numRow][numCol] = {

    { 'm', 'w', 'r', 'u', 't', 'v', 'n', 'j', 'd', 'j', 'y', 'k', 'k', 'g', 'g', 'd', 'c', 'v', 'n', 'x', 'm', 'd', 'q', 'y', 'u', 't' },
    { 'y', 'e', 'r', 'y', 'e', 't', 'w', 'y', 'u', 'w', 'r', 's', 'f', 'h', 's', 'g', 'a', 'a', 'g', 'd', 'b', 'b', 'b', 'g', 'x', 'z' },
    { 'j', 'd', 'j', 'y', 'k', 'k', 'g', 'g', 'd', 'c', 'v', 'n', 't', 'w', 'y', 'u', 'w', 'r', 's', 'f', 'h', 's', 'g', 'a', 'a', 'g' },
    { 'y', 'e', 't', 'w', 'y', 'u', 'w', 'r', 's', 'f', 'h', 'j', 'y', 'k', 'k', 'g', 'g', 'd', 'c', 'v', 'g', 'a', 'a', 'g', 'd', 'b' },
    { 'e', 'r', 'y', 'e', 't', 't', 'v', 'n', 'j', 'd', 'j', 'y', 'k', 'w', 'r', 's', 'f', 'h', 's', 'g', 'g', 'g', 'd', 'c', 'v', 'g' },
    { 'y', 'u', 'w', 'r', 's', 'f', 'h', 's', 'g', 's', 'f', 'h', 's', 'g', 'a', 'a', 'g', 'd', 'w', 'y', 'u', 'w', 'r', 's', 'f', 'h' }
};






int main()
{

    char *ltrptr;
    ltrptr = &letters[0][0];

    const int arraySize = 6 * 26;
    int answer = 0;

    cout << " Select row for sort: " << endl;
    cin >> answer;
    char newArray[numCol];
    char *ltrptr2;
    ltrptr2 = &newArray[0];

    for (int i = 0; i < numCol; i++){
        newArray[i] = letters[answer - 1][i];

    }
    cout << "Selected row: before" << newArray << endl;
    selectionSort(ltrptr2, numCol, ascending);
    cout << "Selected row: after " << newArray << endl;

    getchar();
    return 0;
} 

1 个答案:

答案 0 :(得分:1)

如果您实际包含了所获得的输出和预期的输出(以及给定的输入),而不是尝试描述输出,那会更好。

但是你的代码有一个明显的错误,这个错误与你的模糊描述一致:你没有在你的字符数组中放置一个C字符串,但是你试图将它打印出来,就像它确实包含一个C字符串一样。

(特别是,要在字符数组中存储C字符串,必须存储字符序列后跟空字符