Newsgroup: it.comp.lang.c++
Titolo: STRANO COMPORTAMENTO

Ciao a tutti.
Ho ripreso da qualche giorno il C++ e credo di avere qualche
problemino(strano a dir la verità).
Ho il seguente codice(piccolo...non vi preoccupate :-) ):
-------------------------------
#include <iostream.h>
int main(){
 char *stringhe[3];
 for(int i=0 ; i<2 ; i++){
  cout<<endl<<"Inserisci la riga"<<endl;
  cin>>stringhe[i];
 }
 cout<<"Hai immesso le segg. righe: "<<endl;
 for(int j=0; j<2 ; j++)
  cout<<stringhe[j]<<endl;
 return 0;
}
-------------
In compilazione non ho problemi, ma in esecuzione il programma crasha!!!
come mai? magari i puntatori a char vorrebbero scrivere in aree di memoria
riservate?come faccio a risolvere questo problema?
Grazie mille anticipatamente

 problemino(strano a dir la verità).
#include <iostream>
#include <string>
using namespace std;
int main(){
 string stringhe[3];
 for(int i=0 ; i<=2 ; i++){
  cout<<endl<<"Inserisci la riga"<<endl;
  cin>>stringhe[i];
 }
 cout<<"Hai immesso le segg. righe: "<<endl;
 for(int j=0; j<=2 ; j++)
  cout<<stringhe[j]<<endl;
}
Secondo me ti conviene dare una ripassata alle basi del linguaggio,
ai puntatori, ma soprattutto, smettere di usare i char *  e passare
alle string.
:-)
ciaociao!
-- 
Gerolamo

 scrivere in aree di memoria riservate?
pare di si :)
ciao,
paulo

 :-)
concordo anche qui. ma ho intenzionalmente usato i char * ...volevo vedere
cosa accadevo. Cmq ora che ci penso credo che avrei dovuto utilizzare la
malloc per far funzionare qual codice che più che c++ era un codice C.
Si verifica però un altro problema (indipendente dal precedente): Perchè non
mi viene catturata tutta la riga???
mi spiego meglio:
se inserisco "ciao" è ok, ma se inserisco "ciao mamma" viene memorizzato
solo "ciao" come se lo spazio causasse l'interruzione della linea.
Come faccio ors che utilizzo la string?
Grazie mille!

 Come faccio ora che utilizzo la string?
Risolto...credo...
al posto di cin>> utilizzo
getline(cin, stringhe[i])
è normale che debba dare due volte il carattere di ritorno a capo per far
memorizzare la stringa?
altro che ripassare...ste cose proprio non le sapevo!!!!
Vi ringrazio tantissimo!

 per far memorizzare la stringa?
uhm... no :-(
Compilato con g++ (GCC) 3.3.4 (Debian 1:3.3.4-3)
non da questo problema...
Perň cosě su due piedi non mi viene in mente nulla, sorry.
Che compilatore usi?
-- 
Gerolamo

 Che compilatore usi?
MS Visual C++ 6.0

 Ho ripreso da qualche giorno il C++ e credo di avere qualche
Ciao, a parte il programma e le ovvie segnalazioni che ti hanno fatto (uso
di string), delle quali vedo con soddisfazione che ne hai tenuto conto, ti
chiedo, come mai dichiari
char *stringhe[3]; // 3 !
e poi fai
for(int i=0 ; i<2 ; i++)
solo con i={ 0 , 1 } ?
Hai allocato tre puntatori, non due !
Per il resto, ho provato il tuo codice sul Borland e non c'č il discorso del
doppio invio che dici, riposta il tuo ultimo codice, tanto saranno poche
righe.
ciao.

 righe.
Mah...ci credi se ti dico che non lo fa piů???????
Strano vero?...vabbč...eppure non ho modificato nulla!
Grazie mille anche a te per il tempo dedicatomi
Ciao

Qualcosa di piu' STL - orienteded:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
   vector<string> input;
   string buffer;
   while (getline(cin,buffer)) input.push_back(buffer);
   cout << "Hai inserito "<<input.size() << " linee: \n";
   for (size_t i=0;i<input.size();i++) cout<< input[i]<<"\n";
}
La stampa su video delle linee si puo' fare anche con la funzione copy 
inclusa in <algorithm> ma ora non ricordo perfettamente la sintassi 
degli ostream_iterators quindi passo la palla agli altri :-)
-- 
Hai recensioni nel cassetto di musica, cinema, letteratura,fumetti??
Ascolta e pentiti e se hai tempo vergognati
http://tonysuper.altervista.org

 MS Visual C++ 6.0
male :))
se vuoi rimanere in casa MS, puoi scaricare gratuitamente il nuovo
compilarore VC++ 2003, che peraltro e` estremamente aderente agli
standard (o meglio, la libreria inclusa) e dalla regia dicono essere
pure un ottimo compilatore.
Se no sempre in ambito windows, puoi usare OpenWatcom (IDE + Compilatore
etc gratuito ed open source), ex Symantec, se ricordo bene.
Oppure uno dei vari IDE/compilatore singolo basati sul gcc.
Tutte queste soluzioni mi sembrano superiori al 6.0, in quanto quetso e`
antecedente alla formalizzazione dello standard (se ricordo bene), e
parecchio fuori standard.
-- 
RiK0
Non credo negli schemi non vincenti.

 pure un ottimo compilatore.
non mi interessa la Ms; mi hanno dato questo programma insieme al libro.
Ecco perchè lo uso. A volte uso anche Dev-C++ 4.....come è?

  A volte uso anche Dev-C++ 4.....come č?
Basato sul gcc.. quindi direi non male.
Anche se imho e` una versione vecchia. Dovremmo essere arrivato alla 5.x
E ora credo si basi sul gcc 3.x, quindi estremamente meglio del 2.95
