PDA

Visualizza la versione completa : [C++] Alla scrittura di un elemento di un array viene modificato tutto


SuperGulp1970
13-08-2009, 10:36
Ciao a tutti,
ho questo tipo di problema:



N=1;
while (recv (sd,BufferIn,N,0))
{
if (strcmp(BufferIn,"\n")==0)
{
Nn=strlen(AppoStr);
PageIn[i]=new char [ Nn + 1 ] ;
PageIn[i]=AppoStr;

printf ("AppoStr= %s\nLen=%d\ni=%d\n",AppoStr,Nn,i);
printf ("............................\n");
printf ("PageIn[%d]=%s\n",i,PageIn[i]);
printf ("********************************\n");
printf ("PageIn[0]=%s\n",PageIn[0]);
printf ("PageIn[1]=%s",PageIn[1]);
printf ("\n--------------------------------\n");
i++;
AppoStr[0]='\0';
}
else
strcat(AppoStr,BufferIn);
}


Da una connessione tcp prendo i dati (
while (recv (sd,BufferIn,N,0)))
ed aggiungo i singoli carattere in AppoStr, fino a quando non trovo \n.


char *PageIn[3048];

A questo punto definisco lo spazio necessario per contenere la stringa AppoStr nell'iesima posizione di PageIn.
Nell'output di debug ho questo:

*************************
AppoStr= HTTP/1.1 401 Unauthorized
Len=26
i=0
............................
PageIn[0]=HTTP/1.1 401 Unauthorized
********************************
PageIn[0]=HTTP/1.1 401 Unauthorized
PageIn[1]=(null)
--------------------------------
AppoStr= Server:
Len=9
i=1
............................
PageIn[1]=Server:
********************************
PageIn[0]=Server:
PageIn[1]=Server:
--------------------------------
AppoStr= Date: Thu, 13 Aug 2009 07:51:27 GMT
Len=36
i=2
............................
PageIn[2]=Date: Thu, 13 Aug 2009 07:51:27 GMT
********************************
PageIn[0]=Date: Thu, 13 Aug 2009 07:51:27 GMT
PageIn[1]=Date: Thu, 13 Aug 2009 07:51:27 GMT
--------------------------------
AppoStr= WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
Len=54
i=3
............................
PageIn[3]=WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
********************************
PageIn[0]=WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
PageIn[1]=WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
--------------------------------

Si evince che

Quando scrivo in PageIn[i] il valore di AppoStr viene regolarmente scritto (nell'output subito dopo la riga di punti (............)
Il problema che vengono modificati anche l'altri elementi dell'array.

Cosa che mi sfugge ?

Grazie

Loading