Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - situazioni che hanno dell'incredibile....
Forum - C/C++ - situazioni che hanno dell'incredibile....

Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 22:14
Sabato, 07/08/2010
mi è successa una cosa troppo assurda:
ho la necessità di convertire 2 variabili di tipo string in 2 array di char.
è da un pomeriggio che sto diventando scemo..
praticamente inizialmente ho usato strcpy e ho avuto problemi:

Codice sorgente - presumibilmente C#

  1. string NUMERO="incredibile";
  2.  string MESSAGGIO="mha...";
  3.  char numero[]="";
  4.  char messaggio[]="";
  5.  strcpy(numero,NUMERO.c_str());
  6.  strcpy(messaggio,MESSAGGIO.c_str());    
  7.  cout<<numero<<endl<<messaggio<<endl<<endl<<NUMERO<<endl<<MESSAGGIO<<endl;



in output ricevo:
Codice sorgente - presumibilmente Plain Text

  1. ha...   //variabile numero
  2. mha...  //variabile messaggio
  3.  
  4. incredibile  //variabili stringa da convertire
  5. mha...



com'è possibile che la variabile messaggio vada completamente in numero ( tranne il primo carattere) senza essere menzionata?

ho provato allora a fare una soluzione fai da te:

Codice sorgente - presumibilmente C#

  1. string NUMERO="incredibile";
  2.     string MESSAGGIO="mha...";
  3.     char numero[]="";
  4.     char messaggio[]="";
  5.    
  6.     int i;
  7.     for(i=0;NUMERO.c_str()[i]!='\0';i++)
  8.     numero[i]=NUMERO.c_str()[i];
  9.     numero[i]='\0';
  10.    
  11.     for(i=0;MESSAGGIO.c_str()[i]!='\0';i++)
  12.     messaggio[i]=MESSAGGIO.c_str()[i];
  13.     messaggio[i]='\0';
  14.  
  15.     cout<<numero<<endl<<messaggio<<endl<<endl<<NUMERO<<endl<<MESSAGGIO<<endl;



ricevendo un output IDENTICO a quello precedente.
il mio stupore è alle stelle, esiste una spiegazione logica a tutto questo?
esiste soprattutto una soluzione? :O
spero che riusciate ad aiutarmi.

PM Quote
Avatar
qualcuno (Ex-Member)
Rookie


Messaggi: 37
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 23:45
Sabato, 07/08/2010
Cerchi di copiare, con la strcpy, una stringa di N caratteri, in una stringa che è lunga un carattere (essendo vuota ha solo il terminatore, '\0').
Quindi al posto di char numero[]=""; char messaggio[]="";
metti char numero[100]; char messaggio[100]; (Al max allochi dinamicamente in base alla dimensione della stringa myStr.size())

Ultima modifica effettuata da qualcuno il 07/08/2010 alle 23:56
PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 9:06
Domenica, 08/08/2010
Testo quotato

Postato originariamente da NickoMaiden:



esiste una spiegazione logica a tutto questo?



in queste cose esiste SEMPRE una soluzione logica:D:D

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 18:58
Domenica, 08/08/2010
più che altro mi viene da domandare....perché ti servono due variabili char* ? Non puoi operare sulle std::string? Sono state fatte apposta...

PM Quote