генерация строки в c++
Мне нужно сгенерировать строки из 10 разных символов, а потом их сортировать. На этапе генерации в цикле беру из symbols с помощью rand() символы и пытаюсь сложить в строку a. Но код прибавляет мне к 10 символам в конце всю строку алфавита, а в начале отображает неполную увеличивающуюся строку и при последующих компиляциях выводится одна и та же последовательность символов. Можете объяснить, в чем ошибки?
#include <iostream>
#include <string>
#include <cstdlib>
int main()
{
char symbols[27] = "abcdefghijklmnopqrstuvwxyz";
char a[11] = {0};
int random;
int i;
for (i = 0; i<11; i++) {
random = rand()%(26);
a[i] = symbols[random];
puts(a);
}
std::cout << a << std::endl;
return 0;
}
l
lr
lrf
lrfk
lrfkq
lrfkqy
lrfkqyu
lrfkqyuq
lrfkqyuqf
lrfkqyuqfj
lrfkqyuqfjkabcdefghijklmnopqrstuvwxyz
lrfkqyuqfjkabcdefghijklmnopqrstuvwxyz
Program ended with exit code: 0
- это фактический вывод
lrfkqyuqfj
- это ожидаемый, но чтобы он в последующем состоял из постоянно меняющихся символов
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Замените
for (i = 0; i<11; i++) {
на
for (i = 0; i<10; i++) {
чтобы оставлять в конце нулевой символ, говорящий о конце строки...
P.S. Непринципиально, но смешение французского с нижегородским (puts и cout) оставляет не самое благоприятное впечатление...