Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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.


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
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


Nothing is impossible; impossible itself says "I' m possible"...
Qualunque sia la risposta tu non ce l'hai. (Gregory House)
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


Alex=)
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...


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote