Записать в первый байт строки количество элементов (символов) этой строки

По заданию у меня строка ограничена длиной 254. В первый байт строки нужно вписывать количество элементов введенной строки, при этом сдвинуть уже записанную информацию.

Я реализовал это так:

int n = strlen(s);
char *s2;
char ch=n+'0';
s2 = new char [256]; // 254 +1 байт на первый символ и +1 байт на нуль-терминатор
for(int i=0; i<n; i++)
{
   s2[i]=s[i];
}
s[0]=ch;
for(int i=1; i<=n+1; i++)
{
   s[i]=s2[i-1];
   cout<<s[i-1];
}

Проблема в том, что строка у меня рассчитана на 254 символа, а с таким кодом я могу нормально реализовать только 9, потому что двузначные числа не могут записаться в один байт. Не знаю, как это можно реализовать.


Ответы (1 шт):

Автор решения: Harry

Непонятно, в первый байт вносить длину только строки, строки с учетом первого байта, или как? Вот, если считать только байты в строке, без нулевого и первого с длиной.

int n = strlen(s);
assert(n >= 0 && n <= 254);
s2 = new char [256];
*(unsigned char*)s2 = n;
for(int i = 0; i <= n; i++)
{
   s2[i+1] = s[i];
}

Собственно, это все.

→ Ссылка