|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
[C-Unix] Non capisco cosa è che non va...
Ciao a tutti!Sto praticamente
Codice:
char termord='c';
while(termord == 'c'){
fflush(stdin);
printf("Inserire codice portata.. ");
scanf("%s",&c.cod_piet);
printf("%s",c.cod_piet);
printf("\n\n\nInserire numero di portate per questa pietanza.. ");
scanf("%d",&c.n_port);
printf("\n\n\nPremere 'q'(quit) per terminare l'ordinazione,\noppure 'c' per continuare\n ");
scanf("%c",&termord); }
Fatemi sapere qualcosa, perchè mi sto incrippando (io uso quella scanf anche prima! e non mi spiego perchè quella non piaccia al compilatore...) Grazie raga' |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
L'ultima scanf, quella che hai messo in verde, non chiede nulla in input perché "riceve" il \n lasciato nel buffer dalla precedente scanf. Io in questi casi consiglio sempre l'utilizzo di fgets+sscanf, anche se risulta un pochino più lungo. Altrimenti puoi mettere: while (getchar () != '\n'); oppure scanf("%d%*c",&c.n_port);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
ciao
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Faccio notare che la fflush() è fatta per operare su stream di output, non di input. Il comportamento di fflush() con stream di input non è definito, quindi fflush(stdin) è da evitare.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1568
|
al posto di usare la scanf potresti usare questa funzione che simula la getch() di windows e praticamente prende un carattere alla volta senza aspettare l'invio;
Codice:
#include <termios.h>
#define STDIN_FILENO 0
int readkey();
int main()
{
int a;
a=readkey();
printf ("Premuto %d\n",a);
return 0;
}
int readkey()
{
int c;
struct termios tty, otty;
tcgetattr(STDIN_FILENO, &otty);
tty = otty;
tty.c_lflag &= ~(ECHO | ECHOK | ICANON);
tty.c_cc[VTIME] = 1;
tcsetattr(STDIN_FILENO, TCSANOW, &tty);
c = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &otty);
return (c);
}
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Quote:
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
risolto con getchar, grazie mille
Buona serata a tutti!!! |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:52.



















