shube (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/06/2011
|
Il seguente programma dovrebbe contare le righe e stampare il contenuto di "data". Invece mi viene fuori questo:
1 4 12
3 12 93
12 5 99
1 4 12
0 6386785 -1075038064
1 4 12
9 0 93
9 5 99
1 4 12
****************
CONTENUTO "data"
****************
01.04.12
03.12.93
12.05.99
01.04.12
09.09.09
*****************
PROGRAMMA
*****************
|
|
shube (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/06/2011
|
Codice sorgente - presumibilmente C++ |
/* LETTURA FILE DI TESTO */ #include <stdio.h> #include <string.h> int righe(char nf[]); int main() { char nomefile[] = "data"; int r = righe(nomefile); int data[r][3]; FILE *f; f=fopen(nomefile,"r"); int i; i = 0; while(!feof(f)){ fscanf(f, "%i.%i.%i\n", &data[i][0],&data[i][1],&data[i][2]); printf("%i %i %i\n", data[i][0],data[i][1],data[i][2]); i++; } fclose(f); return 0; } int righe(char nf[]) { int linee=0; char c; FILE*fl; fl=fopen(nf,"r"); fseek(fl,0,0); if (fl!=NULL) { while(fscanf(fl,"%c",&c)!=EOF) if(c=='n') linee++; } fclose(fl); return linee; }
|
Ultima modifica effettuata da shube il 26/06/2011 alle 13:44 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
Fai attenzione a questa riga
if(c=='n')
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
shube (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/06/2011
|
Quella riga è ok. Mi è bastato cambiare le %i con %d
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
Quella riga NON è ok ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
shube (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/06/2011
|
Mi sono corretto così:
Codice sorgente - presumibilmente C++ |
/* LETTURA FILE DI TESTO */ #include <stdio.h> #include <string.h> int righe(char nf[]); int main() { char nomefile[] = "data"; int r = righe(nomefile); int data[r][2]; FILE *f; f=fopen(nomefile,"r"); int i; i = 0; while(!feof(f)){ fscanf(f, "%d.%d.%d\n", &data[i][0],&data[i][1],&data[i][2]); printf("%d %d %d\n", data[i][0],data[i][1],data[i][2]); i++; } fclose(f); return 0; } int righe(char nf[]) { int linee=0; char c; FILE*fl; fl=fopen(nf,"r"); fseek(fl,0,0); if (fl!=NULL) { while(fscanf(fl,"%c",&c)!=EOF) if(c=='\n') linee++; } fclose(fl); return linee; }
|
Comunque non so... prova a dirmelo no? Magari ci capisco qualcosa pure io dato che sono alle prime armi.
forse è così?
Codice sorgente - presumibilmente Plain Text |
Ultima modifica effettuata da shube il 26/06/2011 alle 14:15 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
E' importante che tu capisca da solo, altrimenti non impari.
Hai controllato quanto vale
r
dopo che è stata eseguita la
int r = righe(nomefile);
?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
shube (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/06/2011
|
ok ora mi da 5 ;D grazie mille...
Ultima modifica effettuata da shube il 26/06/2011 alle 14:27 |
|
Pitagora (Member)
Expert
Messaggi: 367
Iscritto: 12/06/2010
|
Postato originariamente da shube:
zero D: come mai? |
Sbagli... Rivedi, le righe 36 37 38. Ah un consiglio, metti sempre le istruzioni in blocco, ove è possibile
{.....} |
|