wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
Salve a tutti mi sono appena inscritta a questo sito che trovo assolutamente fantastico. E vorrei chiedervi un'aiuto!
Dovrei scrivere un programma in c che inserita una scringa(es: ciao) mi stampi il valore di ogni parola in codice ascii(es: c=99; i=105; a=97; o=111)
Il mio problema è che se scrivo:
printf("Inserisci una parola: ");
scanf("%s",&n);
for(i=0;strlen(n);i++)
printf("sono: %d \n", n);
mi stampa i primi due giusti ma poi una miriade di altri numeri e si blocca, allora ho provato:
printf("Inserisci una parola: ");
scanf("%s",&n);
if(n !='\0')
i++;
printf("sono: %d \n", n);
ma mi stampa solo il valore dell'ultima lettera inserita, e levando i++ stampa solo la prima!
Non so + come fai potete aiutarmi per favore facendomi capire esattamente dove sbaglio??
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
allora quando fai
scanf("%s",&n);
n che tipo è? non puoi passare l'indirizzo di una variabile, ma devi passare l'indirizzo del primo elemento di un vettore:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> int main() { char parola[10]; printf("Inserisci una parola\n"); scanf("%s",parola); for(int i=0;i<strlen(parola);i++) { printf("%d - ",parola[i]); } return 0; }
|
allora char parola[10]; è un vettore.
scanf("%s",parola);
ho passato l'indirizzo del primo elemento del vettore, avrei potuto fare scanf("%s",&parola[0]); è la stessa cosa
in questo modo cio che l'utente scrive viene salvato nel vettore. Attenzione che il vettore è di 10 elementi.
poi ho fatto un ciclo dove vado a stampare il codice ascii delle varie lettere.
Spero di essere stato chiaro.
Ultima modifica effettuata da Overflow il 16/01/2009 alle 18:44 |
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
capito!!
Ti ringrazio mi stavo scervellando da giorni su questo programma non sai che grande aiuto mi hai dato!!
|
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
scusami tanto ma ho un piccolo problema....oggi sono andata a rivedermi il programma e indovina?
Ora mi esce un'errore.
Premettendo che ho fatto copia e incolla..ora mi esce:
In function 'main':
'for' loop initial declaration used outside C99 mode.
Posto uno screen per maggiore chiarezza:
|
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
peccato nn me l'aggiunga... :S
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Codice sorgente - presumibilmente C/C++ |
int main()
{
[b]int i;[/b]
char parola[10];
printf("Inserisci una parola\n");
scanf("%s",parola);
[b]for(i=0;i<strlen(parola);i++)[/b]
{
printf("%d - ",parola[i]);
}
return 0;
}
|
Ultima modifica effettuata da theprogrammer il 29/01/2009 alle 11:40 |
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
ecco ora funziona :P
correggimi se sbaglio, l'errore era che dichiaravo int i=0 nel for...cosa che se lo compilo come file .cpp viene accettato ma se compilato come file .c no, o per lo meno questo ho notato
Grazie e scusa per la mia imbranataggine :P
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da wicca89:
correggimi se sbaglio |
Corretto ...
per lo meno questo ho notato |
In C la dichiarazione delle variabili non e' consentita ovunque nel testo, ma solamente all'inizo dei blocchi.
In C++, non esiste questo limite. |
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
grazie mille!!
|
|