Для одного очевидного момента, «C10» требует 4 символа, при условии, что вы хотите, чтобы он был как обычная строка C (3 в строке + 1 NUL-терминатор), но вы только освободили место для 2.
По крайней мере, если вы хотите, чтобы ваши 1-10 были текстовыми символами, вы обычно хотели бы сделать что-то вроде:
sprintf(record, "%c%d", letter[rand()%2], num);
Не то чтобы это имело большое значение, но вы, похоже, включили лот ненужных заголовков для того, что вы делаете.