C-строки завершаются нулем, что означает, что они заканчиваются значением 0.
В этом случае, если вы хотите вывести первые 10 символов алфавита, вам необходимо принять во внимание этот нулевой символ завершения.
Есть несколько способов сделать это, но первое, что вам нужно сделать, это учесть дополнительный символ в вашем буфере:
#define BUF_SIZE 10
char buf[BUF_SIZE + 1];
В зависимости от вашего компилятора эта буферная память уже может быть инициализирована нулями, но лучше никогда не делать предположений.
Установить последнее значение буфера равным 0, чтобы завершить строку:
buf[BUF_SIZE] = 0;
Затем вы можете продолжить работу с оставшимся кодом, который вы уже написали, и вы можете просто вывести массив символов в виде строки.
char a = 'a';
for (int i=0; i<BUF_SIZE; ++i) {
buf[i]= a;
a++;
}
cout << '[' << buf << ']' << endl;
Важно просто установить конец строки равным 0. Когда вы приводили свой массив символов в строку, это значение, вероятно, было повреждено, и в памяти были случайные значения, прежде чем оно достигло этого значения 0.