[ elektroing @ 04.06.2009. 19:25 ] @
Svakim pokretanjem programa treba da se izvrsi inkrementiranje broja iz txt fajla.
Prvim pokretanjem od unesenog broja 1 dobijam

1
2

Sledecim pokretanjem nista se ne desava, jer najvjerovatnije vazda ucitava broj 1 umjesto da ucita 2 i da da na izlazu
1
2
3


CODE:

#include <stdio.h>
int main ()
{
int broj;
FILE * pFile;
pFile = fopen ("myfile.txt","r+");
fscanf(pFile,"%d",&broj);
if (pFile!=NULL)
{
broj=broj+1;
fprintf(pFile,"\n%d",broj);
fclose (pFile);
}
return 0;
}
[ marko_81 @ 04.06.2009. 20:57 ] @
To je zato sto sa scanf uvek citas jedan te isti red. Treba da se pozicioniras nekako na poslednji upisani red i njega da procitas.
[ elektroing @ 05.06.2009. 08:25 ] @
OK. Skontao sam i ja to samo ne znam kako da ocitam taj zadnji karakter
Meni bi i odgovarala da nakon citanja iz fajla on izbrise sadrzaj, izvrsi inkrementiranje broja i sacuva ponovo u fajl, tako da ce u fajlu vazda postojati samo jedan broj.

Samo koja je komanda za brisanje sadrzaja fajla ili kako da ocitaz zadnji karakter ?
[ X Files @ 05.06.2009. 09:21 ] @
Citat:

Samo koja je komanda za brisanje sadrzaja fajla ili kako da ocitaz zadnji karakter ?

Ne treba ti naredba za brisanje. Otvaranje datoteke za pisanje (w+) ce prethodni sadrzaj automatski ukloniti.

Dakle, mozes ovako, iz dva otvaranja (moze i iz jednog ali da ne komplikujemo za pocetak):

1. procitas sadrzaj fajla, gde je samo jedan znak:
fscanf( pFile,"%d",&broj );
(prethodno otvoris datoteku za citanje i zatvoris je nakon citanja)

2. uvecas brojac:
++broj;

3. upises novi sadrzaj fajla:
fprintf( pFile,"%d", broj );
(prethodno otvoris datoteku za PISANJE i zatvoris je nakon upisa)



P.S.

Citat:

if (pFile!=NULL)

Taj deo koda ide pre fscanf odnosno fprintf, a ne posle kao sto si napisao.
[ elektroing @ 05.06.2009. 12:50 ] @
Hvala najljepsa !

Radi.