PDA

View Full Version : [C] ANOMALIA gets


ciusss89
23-09-2011, 08:13
Buon giorno,

Ho la necessità di usare una gets preceduta da uno scanf.
ESEMPIO A:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define QCAR 29+1
#define QDATA 8+1

int main(){
char KEY[QCAR],KEYop[QCAR];

scanf("%s",KEY);
gets(KEYop);

printf("\n %s - %s",KEY,KEYop);
retur 0;
}

Se provate a compilarlo, si nota che, ci viene permessa l'introduzione del dato da tastiera solo quando viene eseguita la scanf, in questo codice, la gets è come se non fosse presente.

ESEMPIO B

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define QCAR 29+1
#define QDATA 8+1

int main(){
char KEY[QCAR],KEYop[QCAR];

gets(KEYop);
scanf("%s",KEY);

printf("\n %s - %s",KEY,KEYop);
retur 0;
}
Funziona come ci si aspetta, cioè vengono acquisiti da tastiera in 2 momenti diversi degli input.


Come è possibile che se la gets la metto sopra viene "eseguita", e se sta sotto no?

ciusss89
23-09-2011, 08:47
Risolto, ....prima della gets, lanciare un getchar();