Programmino stringhe
#include
#include
#include
int main()
{
char parola[7], c;
int i=0;
while (i<7)
{
printf ("dammi un carattere: \n");
scanf ("%c", &c);
parola=c;
i=i+1;
}
printf ("parola digitata: ", parola);
system ("PAUSE");
return 0;
}
Non funziona. Come mai? Cosa dovrei cambiare?
Per caso il problema è il fatto che prenda l'INVIO come carattere? Che sia questo o no il problema, come si risolve questa cosa?
Grazie in anticipo per le risposte.
#include
#include
int main()
{
char parola[7], c;
int i=0;
while (i<7)
{
printf ("dammi un carattere: \n");
scanf ("%c", &c);
parola=c;
i=i+1;
}
printf ("parola digitata: ", parola);
system ("PAUSE");
return 0;
}
Non funziona. Come mai? Cosa dovrei cambiare?
Per caso il problema è il fatto che prenda l'INVIO come carattere? Che sia questo o no il problema, come si risolve questa cosa?
Grazie in anticipo per le risposte.
Risposte
No, il problema è che una stringa deve sempre terminare con il terminatore '\0'. Tu hai un array di 7 caratteri che leggi da stdin e che saranno quindi certamente diversi dal terminatore. Se vuoi 7 caratteri devi avere un array di 8 caratteri in modo da avere il terminatore di stringa.
Ho apportato la correzione da te indicatami, ma ancora non va... Anche lasciando libera l'ultima cella, comunque non va...
Mostra la modifica che hai fatto. Hai settato a '\0' l'ultimo carattere dell'array?
#include
#include
#include
int main()
{
char parola[7], c;
int i=0;
while (i<6) //non riempamo l'ultima cella pke dobbiamo lasciar spazio al terminat di stringa
{
printf ("dammi un carattere: \n");
scanf (" %c", &c);
parola=c;
i=i+1;
}
printf ("parola digitata: ", parola);
system ("PAUSE");
return 0;
}
SE SCRIVO
parola[7]='0\';
OPPURE parola[7]=0\;
MI DA' ERRORE.
#include
#include
int main()
{
char parola[7], c;
int i=0;
while (i<6) //non riempamo l'ultima cella pke dobbiamo lasciar spazio al terminat di stringa
{
printf ("dammi un carattere: \n");
scanf (" %c", &c);
parola=c;
i=i+1;
}
printf ("parola digitata: ", parola);
system ("PAUSE");
return 0;
}
SE SCRIVO
parola[7]='0\';
OPPURE parola[7]=0\;
MI DA' ERRORE.
È \0 non 0\
Ok, così non mi dà errori. Il programma parte.
PERO' non fa ciò che dovrebbe, cioè non funziona. Ancora non stampa la parola digitata.
Il problema vero è altrove.
#include
#include
#include
int main()
{
char parola[7], c;
int i=0;
parola[7]='\0';
while (i<6) //non riempamo l'ultima cella pke dobbiamo lasciar spazio al terminat di stringa
{
printf ("dammi un carattere: \n");
scanf (" %c", &c);
parola=c;
i=i+1;
}
printf ("parola digitata: ", parola);
system ("PAUSE");
return 0;
}
PERO' non fa ciò che dovrebbe, cioè non funziona. Ancora non stampa la parola digitata.
Il problema vero è altrove.
#include
#include
#include
int main()
{
char parola[7], c;
int i=0;
parola[7]='\0';
while (i<6) //non riempamo l'ultima cella pke dobbiamo lasciar spazio al terminat di stringa
{
printf ("dammi un carattere: \n");
scanf (" %c", &c);
parola=c;
i=i+1;
}
printf ("parola digitata: ", parola);
system ("PAUSE");
return 0;
}
Ho appena notato che la stringa di formato nel printf non contiene alcun %s e quindi la stringa non viene stampata.
Grazie mille... ora è ok...
che errore brutto che ho fatto!
che errore brutto che ho fatto!