[c++] stampare frasi con array di char
ciao a tutti!
Ma usando c++, come si stampa un'intera frase?
Così come l'ho messo io stampa solo una lettera..
Come si fa a stampare un'intera frase?
Ma usando c++, come si stampa un'intera frase?
Così come l'ho messo io stampa solo una lettera..
char Richieste[MAX]; for(i=0;i<3;i++){ cout<<"Richiesta:"; cin>>Richieste[i]; } cout<<"Richieste:"<<Richieste;
Come si fa a stampare un'intera frase?
Risposte
"Richieste" è un array di MAX char. Nel ciclo tu chiedi all'utente di inserire i primi tre caratteri. Poi stampi l'intero array (che probabilmente non avrà un corretto terminatore (zero).
Non capisco bene la domanda, ma forse ti aspettavi che "Richieste" fosse un array di MAX stringhe. Non è così, è un array di MAX caratteri. Prova a spiegare cosa vuoi fare ad un livello più alto.
Non capisco bene la domanda, ma forse ti aspettavi che "Richieste" fosse un array di MAX stringhe. Non è così, è un array di MAX caratteri. Prova a spiegare cosa vuoi fare ad un livello più alto.
Ma semplicemente volevo capire come stampare una frase..
forse ho impostato male quel pezzo di codice!
In pratica avendo un array di char, non posso riempirlo con una frase intera e poi stamparlo?
forse ho impostato male quel pezzo di codice!
In pratica avendo un array di char, non posso riempirlo con una frase intera e poi stamparlo?
A me visualizza tutto, anche se trovo non sia un buon modo per caricare le informazioni. Il tutto viene visualizzato in modo molto strano se non premi invio subito dopo il carattere (prova). Detto questo evidenzierei che dovresti inserire in terminatore di stringa dopo tutti gli elementi se vuoi visualizzare le richieste come stringhe. Insomma, il problema è che il tuo modo di caricare le cose è molto problematico. La stampa invece è corretta.
Per vedere che è corretto prova questo codice:
char Affermazione[] = "Sono il re del mondo"; cout<<Affermazione;vedrai che tutto funziona come dovrebbe.
Sì, ma nel ciclo for chiedi un carattere alla volta, per i primi tre caratteri, senza inserire il terminatore finale.
Prova con qualcosa del genere:
Prova con qualcosa del genere:
#include <iostream> #include <string> #include <cstdio> int main() { const int MAX = 50; char Richieste[MAX]; std::fgets(Richieste, MAX - 1, stdin); std::cout << "Richieste: " << Richieste << '\n'; // Alternativa, usando std::string invece di un array di char. std::string Richieste2; std::getline(std::cin, Richieste2); std::cout << "Richieste2: " << Richieste2 << '\n'; }
"vict85":
Per vedere che è corretto prova questo codice:char Affermazione[] = "Sono il re del mondo"; cout<<Affermazione;vedrai che tutto funziona come dovrebbe.
Ok!! Basta non mettere le quadre in pratica!
Invece per ricevere da tastiera la frase e stamparla basta usare gets() al posto di cin<< giusto?
"Oo.tania":
Invece per ricevere da tastiera la frase e stamparla basta usare gets() al posto di cin<< giusto?
fgets, non gets. Oppure std::getline se usi std::string (che secondo me è meglio nella stragrande maggioranza dei casi).
"claudio86":
[quote="Oo.tania"]Invece per ricevere da tastiera la frase e stamparla basta usare gets() al posto di cin<< giusto?
fgets, non gets. Oppure std::getline se usi std::string (che secondo me è meglio nella stragrande maggioranza dei casi).[/quote]
Perchè non gets?
Ma per fgets serve qualche libreria? mi da errore..
Con gets non hai modo di accorgerti se l'utente inserisce una stringa più lunga della capacità dell'array. Per usarla includi l'header .
"claudio86":
Con gets non hai modo di accorgerti se l'utente inserisce una stringa più lunga della capacità dell'array. Per usarla includi l'header.
Mi da questo errore
too few arguments to function `char* fgets(char*, int, FILE*)' at this point in file
"Oo.tania":
[quote="vict85"]Per vedere che è corretto prova questo codice:char Affermazione[] = "Sono il re del mondo"; cout<<Affermazione;vedrai che tutto funziona come dovrebbe.
Ok!! Basta non mettere le quadre in pratica!
Invece per ricevere da tastiera la frase e stamparla basta usare gets() al posto di cin<< giusto?[/quote]
No, il non mettere nulla tra le quadre ha il solo scopo di non dover contare le lettere della frase che ho messo (il C mette in automatico la dimensione che va bene).
Si intendevo nel "cout", basta non mettere
perchè in effetti così facendo seleziono il carattere da stampare..
cout<<affermazione[i]
perchè in effetti così facendo seleziono il carattere da stampare..
Si, è così.
"Oo.tania":
[quote="claudio86"]Con gets non hai modo di accorgerti se l'utente inserisce una stringa più lunga della capacità dell'array. Per usarla includi l'header.
Mi da questo errore
too few arguments to function `char* fgets(char*, int, FILE*)' at this point in file[/quote]
In effetti ti sta dicendo che la fgets va usata in questo modo

fgets(stringa,LUNGHEZZA_STRINGA,stdin);