Salve a tutti!
Sto scrivendo un semplice programmino che legga una stringa in ingresso, separi le parole e le riscriva una per riga.
Sapete spiegarmi perchè questo codice riceve la stringa in modo corretto ma poi quando la riscrive parola per parola aggiunge caratteri strani?
(es.: inserendo "ciao prova stringa" riporta:
ciaoX "
prova "
stringa
...virgolette comprese!!)
codice:#include <iostream.h> #define LUNGHEZZA_STRINGA 50 typedef char string[LUNGHEZZA_STRINGA]; string stringa; // variabile che conterrà l'input iniziale // Prototipi delle funzioni utilizzate void leggi_stringa(string&); // Programma principale main() { string temp; int i=0,j=0,k=0; // leggo la stringa da ordinare leggi_stringa(stringa); cout << endl << "la stringa e': " << stringa << endl << endl; // Scorro la stringa e separo le parole, mandandole in cout; while(1) { if (stringa[i]==' ') { cout << temp << endl; i++; for (k=0;k<j; k++) { temp[k]= ' '; } j=0; } else if (stringa[i]=='\0') { cout << temp; break; } else { temp[j]=stringa[i]; i++; j++; } } // FINE DEL MAIN // } // Dichiarazione delle funzioni utilizzate void leggi_stringa(string &result) { string temp_string; char temp; int i=0; cout << "Inserire una stringa di lunghezza NON superiore" << endl << "ai 50 caratteri ('0' per terminare la lettura):" << endl << endl; i=0; cin.unsetf(ios::skipws); cin >> temp; while ((temp!='0') && (i<LUNGHEZZA_STRINGA)) { temp_string[i]=temp; i++; cin >> temp; } result=temp_string; }

Rispondi quotando


), quindi anche se le basi ci son già dovevo svolgerlo comunque in questa maniera... :quipy: 