Ciao a tutti,
ho questo tipo di problema:
Da una connessione tcp prendo i dati (codice: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); })codice:while (recv (sd,BufferIn,N,0))
ed aggiungo i singoli carattere in AppoStr, fino a quando non trovo \n.
A questo punto definisco lo spazio necessario per contenere la stringa AppoStr nell'iesima posizione di PageIn.codice:char *PageIn[3048];
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

Rispondi quotando