Записать в первый байт строки количество элементов (символов) этой строки
По заданию у меня строка ограничена длиной 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];
}
Собственно, это все.