1

私のコードは次のとおりです。

char randomChar(int randMax) {
    return (65 + rand() % randMax);
}

int main() {

    srand(time(NULL));
    const int SIZE = 4;
    const int LETTERS = 6;
    char code[SIZE];

    for (int i = 0; i < SIZE; i++) {
        code[i] = randomChar(LETTERS);
    }

    cout << code;

    return 0;
}

問題は、コード配列の長さを 4 に設定したにもかかわらず、randomChar関数が 4 文字 + 追加のランダムな記号を返すことです。

4

4 に答える 4

0

文字列はゼロで終了していません。

あなたはおそらくこれをしなければなりません:

char randomChar(int randMax) {
    return (65 + rand() % randMax);
}

int main() {

srand(time(NULL));
const int SIZE = 4;
const int LETTERS = 6;
char code[SIZE + 1];

for (int i = 0; i < SIZE; i++) {
    code[i] = randomChar(LETTERS);
}

code[SIZE] = '\0';
cout << code;


return 0;
}

または、コメント投稿者@borisbnが推奨するように:

char randomChar(int randMax) {
    return (65 + rand() % randMax);
}

int main() {

srand(time(NULL));
const int SIZE = 4;
const int LETTERS = 6;
char code[SIZE + 1] = {0};

for (int i = 0; i < SIZE; i++) {
    code[i] = randomChar(LETTERS);
}

cout << code;


return 0;
}

ただし、('\ 0'!= 0)が真であるユニバースが存在する場合、後者はそこで失敗します。

于 2013-02-14T12:58:58.387 に答える