Я пытаюсь сделать программу, которая преобразует имя хоста в DNS-имя.Как преобразовать имя хоста в DNS-имя?
Так что, если у меня есть www.google.com Я хочу, чтобы преобразовать его в 3www6google3com0
Я пытался с этим кодом, но он не работает. Может ли кто-нибудь сказать мне, что я делаю неправильно?
int main()
{
unsigned char *a,niz[65536];
unsigned char host[]="www.google.ba";
a=(unsigned char*)&niz[12];
int lock = 0 , i;
strcat((char*)host,".");
for(i = 0 ; i < strlen((char*)host) ; i++)
{
if(host[i]=='.')
{
*a++ = i-lock;
for(;lock<i;lock++)
{
*a++=host[lock];
}
lock++;
}
}
*a++='\0';
printf("%s\n",a);
return 0;
Когда я пытаюсь распечатать его в терминале, я вижу пустое место.
'strcat ((char *) host,". ");' '' '' Host' имеет только 14 байтов (13 для вашей строки и 1 для нулевого терминатора), поэтому вы вызываете неопределенное поведение здесь (запись через выделенный буфер). – szczurcio
Я был бы очень признателен, если бы вы могли объяснить мне немного больше, что вы пытаетесь сказать. Спасибо – HardRock
Вы создаете массив 'unsigned char' (который не нужен BTW, для регулярных строк просто используйте' char') и инициализируя его строковым литералом 'www.google.ba'. Используя '[]', вы сообщаете компилятору, что он должен определить размер массива для вас, и он делает именно это: 13 байт для строки и еще один для нулевого терминатора 14 вообще. Затем вы пытаетесь выполнить _append_ в эту строку с помощью 'strcat', но не хватает места (поскольку выделено только 14 байтов). – szczurcio