Per le stringhe nella scanf non si usa la &. Inoltre, non avrebbe senso scrivere nome[20]. L'hai già dichiarata per un massimo di 20 char, poi devi prenderla in input, controllando che la stringa inserita da tastiera non superi la dimensione che hai impostato. Ci sono funzione della libreria che lo fanno in automatico.
Ciao Gabriele. Accade perché , se hai usato la scanf, la stringa dopo lo spazio non è stata catturata in memoria e quindi non funziona. Usa la fgets se vuoi registrare stringhe con spazi compresi. Ho fatto un tutorial anche su questo!
come mai da un momento all'altro il cursore cambia: prima funziona normalmente, ovvero quando clicco si interpone tra due caratteri e inserisce i nuovi; dopo un po (può darsi dovuto a qualche mio errore) il cursore si posiziona sotto il carattere e lo va a sostituire quando ne inserisco uno nuovo (cosa molto fastidiosa)... uso anche io code blocks... comunque grazie per i tutorial, sono veramente ben fatti e finalmente inizio a capirci qualcosa!!
Ciao! Non ho ben capito la differenza tra char b = "stringa" e char a = 'b'. Inoltre poi perché dopo aver illustrato questa differenza passi a char nome[20]? Grazie
ciao scusami, non scrivendo il -1 dentro l'if non mi stampa a schermo la parola data.. se lo metto invece si, come mai? ho ricontrollato il codice uguale al tuo, se può essere utile uso codelite 7.0 su os x 10.10.3
Perchè dovresti mettere la s? La n sta per "newline" cioè "a capo", praticamente. Se scrivi %c scrivi un carattere alla volta, se scrivi %s scrive l'intera stringa.
Ciao, prima di tutto complimenti per tutti i tutorial, sono fatti molto bene. Grazie! Avevo una piccola domanda, perchè sotto "come ti chiami" nella scanf %s non c'è poi &nome[20] (come mi verrebbe da mettere) ma solo nome ? (senza neanche [20]).
Ciao grazie per questo bel tutorial ho un problema. Sto facendo un esercizio dove chiedo all utente di inserire una serie di stringhe perciò con un for e dopo trasformarle in maiuscolo se sono in minuscolo. Non ho idea come fare il ciclo di conversazioni in maiuscolo. Puoi aiutarmi facendo un tutorial sul problema
Alla variabile nome gli.hai assegnato la lunghezza di 20 caratteri,ma è un valore ha caso oppure ce un ragionamento dietro ? Se tu avessi scritto:char nome [7], non sarebbe stato uguale ? Oppure avrebbe causato problemi ? Rispondimi pleaseeee
Semplicemente metto 20 perchè è difficile che ci sia un nome più lungo di 20 caratteri. Avrei anche potuto mettere 12, tanto per intenderci. Se metto 5 poi naturalmente non posso inserire nomi di 6 caratteri.
Ciao. Scusa ho un domanda: Se metto nome è cognome, inverte solo il nome, ovvero tutto quello che è scritto prima dello spazio. Se lo spazio non lo metto inverte tutto! Come mai? Grazie!
(riga 19) Ho provato a levare il -1 da strlen(nome) ma non mi cambia nulla nel terminale. Sai svelare l'arcano? Io sto provando su ubuntu ma credo che non dovrebbe cambiare niente.
Si. Io mi trovo con quello che dici perchè sto studiando il linguaggio C. Però poi nella pratica non mi trovo, e non mi stampa a video lo spazio. Questo è il codice senza il -1: #include #include int main() { char nome[20]; int i; printf("Come ti chiami? "); scanf("%s", nome); for (i=strlen(nome); i>=0; i--){ printf("%c", nome[i]); } printf(" "); return 0; }
Ehiii non è che potresti fare un video dove spieghi il getchar e il putchar o qualcosa di alternativo? sto capendo le altre cose grazie a te, ma questi argomenti non li ho visti nei tuoi video e quindi mi sento un po' persa xD grazie :*
no non hai capito...., volevo capire perche' TU avevi inserito %c....l..ora ho capito che sta a significare de stampare un carattere per volta...:D grazie
Mi stai aiutando davvero tanto a capire in pochi minuti di video quello che non ho capito per più di un mese con i prof in uni.. Bravissimo davvero!
Carmhack no 1 tutta la vita.
grazie mille
Il doppio uguale ( == ) si usa per il confronto. Dovresti mettere i = 0.
Per le stringhe nella scanf non si usa la &. Inoltre, non avrebbe senso scrivere nome[20]. L'hai già dichiarata per un massimo di 20 char, poi devi prenderla in input, controllando che la stringa inserita da tastiera non superi la dimensione che hai impostato. Ci sono funzione della libreria che lo fanno in automatico.
Basta che nella printf inserisci
, che è un carattere di escape che serve per andare a capo.
Grazie
Ciao Gabriele. Accade perché , se hai usato la scanf, la stringa dopo lo spazio non è stata catturata in memoria e quindi non funziona. Usa la fgets se vuoi registrare stringhe con spazi compresi. Ho fatto un tutorial anche su questo!
come mai da un momento all'altro il cursore cambia: prima funziona normalmente, ovvero quando clicco si interpone tra due caratteri e inserisce i nuovi; dopo un po (può darsi dovuto a qualche mio errore) il cursore si posiziona sotto il carattere e lo va a sostituire quando ne inserisco uno nuovo (cosa molto fastidiosa)... uso anche io code blocks...
comunque grazie per i tutorial, sono veramente ben fatti e finalmente inizio a capirci qualcosa!!
grazie !!!
salve, come si inverte la sequanza di una frase? tipo= io mangio una mela , mela una mangio io?
Ciao! Non ho ben capito la differenza tra char b = "stringa" e char a = 'b'. Inoltre poi perché dopo aver illustrato questa differenza passi a char nome[20]? Grazie
ciao scusami, non scrivendo il -1 dentro l'if non mi stampa a schermo la parola data.. se lo metto invece si, come mai? ho ricontrollato il codice uguale al tuo, se può essere utile uso codelite 7.0 su os x 10.10.3
Perchè dovresti mettere la s? La n sta per "newline" cioè "a capo", praticamente. Se scrivi %c scrivi un carattere alla volta, se scrivi %s scrive l'intera stringa.
come fai a riempire il vettore senza dichiararlo?
Ciao, prima di tutto complimenti per tutti i tutorial, sono fatti molto bene. Grazie!
Avevo una piccola domanda, perchè sotto "come ti chiami" nella scanf %s non c'è poi &nome[20] (come mi verrebbe da mettere) ma solo nome ? (senza neanche [20]).
Ciao grazie per questo bel tutorial ho un problema. Sto facendo un esercizio dove chiedo all utente di inserire una serie di stringhe perciò con un for e dopo trasformarle in maiuscolo se sono in minuscolo. Non ho idea come fare il ciclo di conversazioni in maiuscolo. Puoi aiutarmi facendo un tutorial sul problema
come posso fare a distanziare il nome che mi restituisce in uscita dalla scritta premere un tasto per continuare?
Alla variabile nome gli.hai assegnato la lunghezza di 20 caratteri,ma è un valore ha caso oppure ce un ragionamento dietro ? Se tu avessi scritto:char nome [7], non sarebbe stato uguale ? Oppure avrebbe causato problemi ? Rispondimi pleaseeee
Semplicemente metto 20 perchè è difficile che ci sia un nome più lungo di 20 caratteri. Avrei anche potuto mettere 12, tanto per intenderci. Se metto 5 poi naturalmente non posso inserire nomi di 6 caratteri.
Ah ok, scusa :)
Ciao.
Scusa ho un domanda:
Se metto nome è cognome, inverte solo il nome, ovvero tutto quello che è scritto prima dello spazio. Se lo spazio non lo metto inverte tutto! Come mai?
Grazie!
lo spazio è contato come /0 che chiude la stringa
(riga 19) Ho provato a levare il -1 da strlen(nome) ma non mi cambia nulla nel terminale. Sai svelare l'arcano? Io sto provando su ubuntu ma credo che non dovrebbe cambiare niente.
In che senso non ti cambia nulla? Stampa lo stesso output che hai con il -1?
esattamente
Strano.. il resto del codice è uguale? sicuro?
Si. Io mi trovo con quello che dici perchè sto studiando il linguaggio C. Però poi nella pratica non mi trovo, e non mi stampa a video lo spazio. Questo è il codice senza il -1:
#include
#include
int main()
{
char nome[20];
int i;
printf("Come ti chiami?
");
scanf("%s", nome);
for (i=strlen(nome); i>=0; i--){
printf("%c", nome[i]);
}
printf("
");
return 0;
}
Non so dirti.. sicuro di aver ricompilato? Mai capitata una cosa del genere ..
ciao! perchè mi da errore la printf? nn mi fa eseguire il programma.
Dipende cosa hai scritto dentro la printf.. controlla bene :)
ho controllato ma nnt, nn sarà per caso che nn ho la libreia?
La libreria devi averla per forza.. prova a ricompilare. A volte i compilatori danno strani problemi..
ciao TheCarmhack , sono un tuo nuovo "fedele" ahahah.
Come faccio a prendere il nome di cui ho cambiato l'ordine e salvarlo in una stringa vuota?
Ehiii non è che potresti fare un video dove spieghi il getchar e il putchar o qualcosa di alternativo? sto capendo le altre cose grazie a te, ma questi argomenti non li ho visti nei tuoi video e quindi mi sento un po' persa xD grazie :*
Clincesca_ Vedrò di accontentarti :)
TheCarmhack grazie mille! :)
no non hai capito...., volevo capire perche' TU avevi inserito %c....l..ora ho capito che sta a significare de stampare un carattere per volta...:D grazie
Si davo per scontato che tu avessi inserito %s e non %c.
praticamente mi esce una cosa cosi'......
onairdaPremere un tasto per continuare . . . :O
come faccio ad andare a capo?se metto
mi scrive tutte le lettere in verticale, va a capo ad ogni carattere.
Inserisci
al termine della stringa, non al termine di ogni carattere..
ho provato a fare "
%c" , mi scrive il nome al contrario
o
n
a
i
r
d
aPremere un tasto per continuare. . . :(
ho sbagliato volevo dire "%c
".....ma poi .. perche' mettiamo la lettera n e non s??? :(
figurati ,scusa di cosa? :D
no , guarda che se metto
dopo il %c mi visualizza in questa maniera...
o
n
a
i
r
d
aPremere un tasto per andare avanti