|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Siena - Sassano (SA)
Messaggi: 443
|
[C]mi accetta solo interi
Dubbio amletico: anche il programma più stupido in C, tipo calcolare l'area di un rettangolo, va in overflow se dichiaro x di tipo int e poi quando scanf mi chiede il valore di x e gli batto un carattere.
Per es. int x=0; do { printf ("Digitare il numero di elementi che compongono i 2 vettori: "); scanf ("%d",&x); } while (x==0 || x>20 || x<0); se digito "a", il programma mi va in overflow. Qualche idea? Inoltre, c'è qualcuno che mi può spiegare chiaramente la sintassi di scanf? dove va inserita l'ampiezza nei caratteri? quelle sui manuali non sono chiare...vorrei solo la sintassi
__________________
Gianvito.it - psychodrama Notizie del giorno, commenti e approfondimenti - SottoTesto |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Io in questi casi consiglio di usare l'accoppiata fgets/sscanf, la prima per prendere una riga intera, la seconda per estrarre i dati dalla stringa. Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Città: Siena - Sassano (SA)
Messaggi: 443
|
grazie mille
__________________
Gianvito.it - psychodrama Notizie del giorno, commenti e approfondimenti - SottoTesto |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
#include <stdio.h>
int main (void)
{
char buf[30];
int a, b;
if (fgets (buf, sizeof (buf), stdin) != NULL)
{
if (sscanf (buf, "%d %d", &a, &b) == 2)
printf ("a=%d b=%d\n", a, b);
else
printf ("Input errato\n");
}
return 0;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:34.




















