Помогите, плз, почему в первом случае памяти под строку выделено столько, сколько запрашивал, а в остальных случаях — нет?
Вместо new пробовал malloc, то же самое.
Компилил VC++ 6.0 SP4.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) //Использую: example HTTP://mshome.manser.net/Ch13/Login.asp
{
const int lenght = strlen(argv[1]);
char* tmp = new char[lenght];
strcpy(tmp, argv[1]);
printf("\n%d", lenght); //39
printf("\n%s", tmp); //39 символов, как и должно быть.
int j = 0, k = 0, l = 0, m =0, n = 0;
for(j = 0; j < lenght; j++)
{
if(tmp[j] ==':')
{
k = j + 3;
break;
}
}
char* proto = new char[j];
const int lproto = strlen(proto);
printf("\n%d\n%d", j, lproto); //j=4, lproto=17, почему?
strncpy(proto, tmp,j);
printf("\n%s", proto); //17 символов.
n = k;
for(j = k; j < lenght; j++)
{
if(tmp[j] == '/')
{
l = j - n;
break;
}
continue;
}
char* hst = new char[l];
const int lhst = strlen(hst);
for(j = n ; j < (l + n); m++, j++)
{
hst[m] = tmp[j];
}
printf("\n%d\n%d", l, lhst); //l=17, lhst=33, почуму?
printf("\n%s", hst); //33 символа.
k = j;
for(j = k; j < lenght; j++)
{
tmp[j];
}
l = j - k;
char* dr = new char[l];
const int ldr = strlen(dr);
m = 0;
for(j = k; j < lenght; m++, j++)
{
dr[m] = tmp[j];
}
printf("\n%d\n%d", l, ldr); //l=15, ldr=33, почему?
printf("\n%s", dr); //33 символа.
return 1;
}
... << RSDN@Home 1.1.0 stable >>
Исправлено форматирование. -- ПК