PDA

Visualizza la versione completa : [C] Anomalia lettura variabili


davifumi89
05-03-2011, 15:27
ragazzi mi capitata una cosa stranissimma che non mi mai capitata.



#include <stdio.h>

int main()
{
const int MAX = 32;
int nrighe,ncolon,i,j;

printf("Inserisci il numero di righe ");
scanf("%d", &nrighe);
printf("Inserisci il numero di colonne ");
scanf("%d", &ncolon);

printf("%d, %d", &nrighe, &ncolon);




Inserisco 2 valori come per esempio 2 e 3

e dato che il programma non funzionava e non trovavo l'errore ho deciso de aggiungere quella printf subito dopo aver inserito i valori di nrighe e ncolon.

il risultato che io metta 1 e 1, 2 e 2 o qualsiasi altra cosa sempre questo :

nrighe = 2686776
ncolon= 2686772


Ma che roba ? :)

scusate ma non mi mai capitata una cosa del genere :nonono:

lolide
05-03-2011, 15:57
Svuota il buffer con

char ch; while ((ch = getchar()) != '\n' && ch != EOF);
od un codice simile ogni volta prima di leggere dal buffer di input (con scanf, fgets ecc...).

Alex'87
05-03-2011, 16:27
Originariamente inviato da davifumi89


printf("%d, %d", &nrighe, &ncolon);
nrighe = 2686776
ncolon= 2686772

Ma che roba ? :)

scusate ma non mi mai capitata una cosa del genere :nonono: Guarda bene cosa hai scritto: stai stampando l'indirizzo di nrighe e ncolonne, non il loro contenuto... Il simbolo & (che qui si legge come "indirizzo di") non va usato in questo caso.

dario09
05-03-2011, 16:32
printf("%d, %d", &nrighe, &ncolon);
hai lasciato la ' & ' davanti alle variabili,cosi stampi il loro indirizzo.
ciao.

Laikius91
05-03-2011, 18:51
Originariamente inviato da lolide
Svuota il buffer con

char ch; while ((ch = getchar()) != '\n' && ch != EOF);
od un codice simile ogni volta prima di leggere dal buffer di input (con scanf, fgets ecc...).

Il trucchetto di vuotare il buffer va utilizzando quando si leggono char, negli altri casi la parte rimanente dell'invio (LF) viene automaticamente scartata :)

Il problema la printf come ti hanno detto, togli gli ampersand (&). :)

davifumi89
05-03-2011, 19:09
oh che stupidata che ho fatto! non ci ho fatto neanche caso, colpa mia! grazie dell'aiuto!

Loading