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;
}