-1

C++ で、文字列配列を作成しようとしています。また、文字にアクセスして、次のように変更したいと思います。

#include<iostream>

using namespace std;

int main(){
    int n;
    cin >> n;
    char lines[4][n+1];
    int color = 0;
    for(int a = 0; a < n; a++){
        for(int i = 0; i < 4; i++){
            lines[i][a] = (char) (color % 25 + 97);
            if(i == 1 || i == 3){
                color++;
            }
        }
    }
    cout << lines[0] << endl << lines[1] << endl << lines[2] << endl << lines[3];
    return 0;
}

「lines[i]」のすべてを印刷したい場合、不明な文字が表示されます。

期待される:

エーセグ

エーセグ

bdfh

bdfh

出力:( http://i.stack.imgur.com/SR4Y4.png )

aceg'aceg■bdfh

エーセグ■bdfh

bdfh

bdfh

その理由を知っていますか?(私はコード全体を何度もチェックしましたが、私が考えたchar配列の配列について私が知らない何かを引き起こします)

これを行う他の方法はありますか?(可能であれば、Cのようなライブラリなしで)

編集

すべてのコードをこのメッセージに追加しました。

4

3 に答える 3

2

どのように印刷しているかを正確に確認しないとわかりませんが、のような方法で印刷しているだけの場合はprintf("%s\n", lines[i]);あなたの問題は、文字列を null で終了するのを忘れたためです。

次のようなことを確認してください

for (int i = 0; i < 4; i++) {
    lines[i][n] = '\0';
}
于 2013-08-01T23:05:57.160 に答える