PDA

Visualizza la versione completa : [C] Getchar e uso dei puntatori a carattere


{-_-}
29-10-2007, 18:23
la funzione di output sembra funzionare, è l'input con il doppio ciclo for a dare problemi



#include <stdio.h>

char array[6][6];
int i , j;

for (i=0; i<6; i++){
printf ("inserisci stirnga %d \n", (i+1));

for (j=0; j<6; j++){
array[i][j]=getchar();
}
printf("\n");
}

for (i=0; i<6; i++){
for (j=0; j<6; j++){
printf ("%s", array[i][j]);
}
}

}


grazie

Xaratroom
29-10-2007, 19:05
Ecco come si conviene fare:


#include <conio.h>
#include <stdio.h>

int main ()
{
char array[6][6];
int i , j;

for (i=0; i<6; i++)
{
printf ("inserisci stirnga %d \n", (i+1));

for (j=0; j<6; j++)
array[i][j]=getchar();
printf("\n");

fflush (stdin);
}

for (i=0; i<6; i++)
{
for (j=0; j<6; j++)
printf ("%c", array[i][j]);
printf ("\n");
}
printf ("\n\nPremere un tasto per terminare ...");
getchar ();
return 0;
}

{-_-}
29-10-2007, 19:11
@ Xaratroom


il problema rimane, in input lavora male il codice e non si capisce il perchè si debba premere un sacco di invio.
inoltre fflush se non erro si usa con le scanf in quanto se scrivo "de rossi", mi prende solo "de" e il "rossi" altirmenti rimarrebbe nello stack, ma in questo caso non credo sia quello il problema, abbiamo una getchar quindi non abbiamo il problema delgi spazi.
inoltre ho provato il codice nuovo ma non funge :dhò:

:confused: non ci capisco più niente

Xaratroom
29-10-2007, 19:23
Strano, a me funziona correttamente :confused: (sa la tolgo mi salta le letture) ...
fflush è usata con stream in generale e non solo con scanf ...

oregon
29-10-2007, 19:27
Scusa ... ma prima di correggere il codice ... cosa dovrebbe fare?

Perche' usi la getchar?

duonovembre
29-10-2007, 19:31
non e' ke devi premere 6 volte invio?

prova a mettere un char per riga (lo so sara' lunga:D)

{-_-}
29-10-2007, 19:33
in teoria dovrebbe chiedere all'utende 6 stringhe di al massimo 6 lettere, il problema sorge credo perchè non metto un while del tipo
while (array[i][j]=getchar())!='\n')

solo che non so dove metterlo e come.

senza questo while non posso inserire meno di 6 caratteri.

(lo so che si potrebbe fare con una scanf , ma vorrei imparare bene la getchar )

Xaratroom
29-10-2007, 19:38
Come funziona a voi ?
Perchè a me funziona correttamente e "richiede" solo un invio per stringa ?

{-_-}
29-10-2007, 19:45
ho provato così, non funge ma deve essere vicina alla soluzione


#include <conio.h>
#include <stdio.h>

int main ()
{
char array[6][6];
int i , j;

for (i=0; i<6; i++)
{
printf ("inserisci stirnga %d \n", (i+1));

for (j=0; j<6; j++)
array[i][j]=getchar();
printf("\n");

fflush (stdin);
}

for (i=0; i<6; i++)
{
for (j=0; j<6; j++)
printf ("%c", array[i][j]);
printf ("\n");
}
printf ("\n\nPremere un tasto per terminare ...");
getchar ();
return 0;
}


non mi sembra funzioni il tuo codice, in quanto se inserisci meno di sei caratteri devi premere tanti invio quanti caratteri mancano a raggiungere il sesto, guarda qui che corrispondenza fra numero di caratteri e spazi dovuti all'invio
http://img138.imageshack.us/img138/9789/immagineeg6.th.png (http://img138.imageshack.us/my.php?image=immagineeg6.png)

Samuele_70
29-10-2007, 19:46
char array[6][6];
int i, j;

for( i=0; i<6; i++)
{
printf("inserisci stringa %d : ", (i+1));

j=0;
do
array[i][j]=getchar();
while( j<6 && array[i][j++]!='\n');

/* Elimino eventuali caratteri in più */
while( array[i][j-1]!='\n' && getchar() !='\n');
/* Aggiungo il terminatore di stringa */
array[i][j-1]=0;
}

for( i=0; i<6; i++)
printf ("'%s'\n", &array[i][0]);

Loading