|
|||||||
|
|
|
![]() |
|
|
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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
||
|
|
|
|
|
#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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:41.




















