Devo leggere delle coppie di numeri interi separate da '\n' fino a quando non viene digitato invio per due volte.
In poche parole l'input dovrà essere il seguente:
3 5\n
23 5\n
12 6\n
\n
Fine lettura
Qualcuno può aiutarmi?
Devo leggere delle coppie di numeri interi separate da '\n' fino a quando non viene digitato invio per due volte.
In poche parole l'input dovrà essere il seguente:
3 5\n
23 5\n
12 6\n
\n
Fine lettura
Qualcuno può aiutarmi?
Esempio:Originariamente inviato da alex986best
Devo leggere delle coppie di numeri interi separate da '\n' fino a quando non viene digitato invio per due volte.
codice:char buffer[80]; int num1, num2; FILE *f; if ((f = fopen ("nomefile", "r")) != NULL) { while (fgets (buffer, sizeof (buffer), f) != NULL) { if (buffer[0] == '\n') break; if (sscanf (buffer, "%d %d", &num1, &num2) == 2) { /* ...fai quello che vuoi con i numeri... */ } } fclose (f); }
ok,
il problema però è che devo leggere l'input dallo schermo e non da un file...
Già ... ok.Originariamente inviato da alex986best
il problema però è che devo leggere l'input dallo schermo e non da un file...
Si fa in fretta: togli fopen()/fclose() e poi usi:
while (fgets (buffer, sizeof (buffer), stdin) != NULL)
ok, ora lo provoOriginariamente inviato da andbin
Già ... ok.
Si fa in fretta: togli fopen()/fclose() e poi usi:
while (fgets (buffer, sizeof (buffer), stdin) != NULL)
grazie mille ancora
ok, funziona...
ora avrei un'altra domanda: come faccio a creare un array senza saperne a priori le dimensioni?
Dovresti specificare array di che cosa ... comunque una gestione "dinamica" della dimensione di un array è fattibile con le funzioni di (ri)allocazione dinamica della memoria. Vedi le funzioni standard malloc()/realloc().Originariamente inviato da alex986best
ora avrei un'altra domanda: come faccio a creare un array senza saperne a priori le dimensioni?
In sostanza si alloca un array in modo che contenga all'inizio un tot di elementi (quanti lo stabilisci tu) e poi man mano, quando serve, lo si espande.
un array composto da elementi di una struttura definita da me....
Avresti qualche esempio?
Questo esempio l'ho scritto velocemente (non l'ho provato) ma dovrebbe essere ok.Originariamente inviato da alex986best
un array composto da elementi di una struttura definita da me....
Avresti qualche esempio?
Poi, dove ne hai bisogno, fai:codice:typedef struct { int a; int b; } ELEM, *PELEM; typedef struct { PELEM pelem; int size; } ELEMARRAY, *PELEMARRAY; int ElemArray_Create (PELEMARRAY parray, int size) { PELEM pelem; if (parray == NULL) return 0; pelem = (PELEM) malloc (size * sizeof (ELEM)); if (pelem == NULL) return 0; parray->pelem = pelem; parray->size = size; return 1; } void ElemArray_Free (PELEMARRAY parray) { if (parray == NULL) return; if (parray->pelem != NULL) free (parray->pelem); parray->pelem = NULL; parray->size = 0; } int ElemArray_Realloc (PELEMARRAY parray, int newsize) { PELEM pelem; if (parray == NULL) return 0; pelem = (PELEM) realloc (parray->pelem, newsize * sizeof (ELEM)); if (pelem == NULL) return 0; parray->pelem = pelem; parray->size = newsize; return 1; }
Se ti stai chiedendo perché ho scritto tutto questo codice ... beh, così la gestione dell'array espandibile è molto più "pulita" e "incapsulata"!!!codice:ELEMARRAY mioarray; if (ElemArray_Create (&mioarray, 100)) { .... mioarray.pelem[0].a = 10; mioarray.pelem[0].b = 20; .... if (ElemArray_Realloc (&mioarray, 200)) { .... } ElemArray_Free (&mioarray); }
Naturalmente puoi aggiungere altre funzioni.
Per ogni domanda relativa ad un problema differente, è preferibile aprire una nuova discussione.Originariamente inviato da alex986best
ora avrei un'altra domanda [...]
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...