|
[ vlada89 @ 19.03.2006. 17:48 ] @
| Dakle , ovo je kod jednog programa koji cita i ispisuje imena iz nekog file-a ulaz , ali samo za prvi slog.Interesuje me kako treba modifikovati program da ucita sledeci slog ,ispise ga, i tako sve do kraja datoteke?
FILE *ulaz;
struct slog{char ime[10];};
slog pod;
ulaz=fopen("nova.dat","a");
do
{
/*ovde,pretpostavljam, treba postaviti SEEK ali ne znam kako!!! */
fread(&pod,sizeof(pod),1,ulaz);
printf("%s",pod.ime);
}
while(sizeof(pod)!=0);
fclose(ulaz);
getch();
Hvala za pomoc . |
[ Buffy @ 19.03.2006. 21:35 ] @
uopste te nisam shvatio.
Sta znaci slog???
Code:
while(sizeof(pod)!=0);
Ovo je bezkonacna petlja, jer sizeof pod nikad nece biti 0, vec ce biti 10( isto kao da si stavio while(1) )???
[ zokio @ 20.03.2006. 03:24 ] @
Hm vidim da imas malo problema sa samom sintaksom jezika ! ! !
1. fread() funkcija ti treba samo ako si kreirao binarnu datoteku npr. fp=fopen("ime datoteke","wb");
2. vidim da si poceo neku strukturu nisi ni naveo gdje je main funkcija...
3. struktura ti nije pravilno definirana "slog pod"-nevalja --- treba ici nekako ovako
struct slog
{
char ime[10];
};
struct slog pod;
da znas za ubuduce, mada ti ako sam te dobro skuzio za ovo sto ti trazis struktura uopce ne treba.
e da i u onoj fread()--funkciji ****fread(&pod,sizeof(pod),1,ulaz);****
fread(&pod.ime ,sizeof(char), 25 /*(npr znakova)*/,ulaz);
i pozvao si jos petlju;: while, getc() funkciju, a mislim da ni sam nisi razumio zasto....
evo ti pa pogledaj vec je bilo slicno pitanje samo jos i sa brojanjem znakova i dao sam odgovor :
http://www.elitesecurity.org/tema/167221/0#1086393
nadam se da ce ti pomoci
pozdrav ! !!
[Ovu poruku je menjao zokio dana 20.03.2006. u 04:24 GMT+1]
[Ovu poruku je menjao zokio dana 20.03.2006. u 04:24 GMT+1]
[ vlada89 @ 20.03.2006. 10:26 ] @
Zokio, ja sam hteo da procitam sa (fread) i da potom stampam prvi procitani slog ,zatim sledeci itd.
#include <string.h>
#include <stdio.h>
main()
{
FILE *ulaz;
struct slog{char ime[10];}; // definisem strukturu slog koja ima jedan string ime[10]
slog pod; // definisem neku promenjivu pod tipa slog
ulaz=fopen("nova.dat","r"); // otvorim datoteku koja postoji na disku zbog citanja
do
{ //ovde sam mislio jednom do - while petljom da sekvencijalno
// citam slog po slog i ispisujem na monitor
/*ovde,pretpostavljam, treba postaviti SEEK ali ne znam kako!!! */
fread(&pod,sizeof(pod),1,ulaz);
printf("%s",pod.ime); // dakle, ovde treba da se ispise procitani podatak iz ulaznog file-a
}
while(sizeof(pod)!=0); // i kada dodje do kraja file-a da izadje iz petlje
fclose(ulaz);
}
Medjutim, sve ovako napisano nece da radi. tj, program procita i ispise na ekran samo prvi procitani slog i zavrsi rad.
Iinace Zokio , pogledao sam tvoj program i mislim da mi za ovo pitanje bas ne moze pomoci , ili ja ne mogu da shvatim .
Ulazna datoteka nije binarna.
Hvala za pokusaj pomoci!
Buffy ,ovaj red
while(sizeof(pod)!=0);
bi sluzio za ispitivanje duzine procitanog podatka (pod), i, kada se dodje do EOF duzina procitanog podatka je 0.Tako sam mislio.
U svakom slucaju hvala.
[ Buffy @ 20.03.2006. 11:52 ] @
Ako ulazna datoteka nije binarna, nemoj je citati sa fread, vec sa fscanf().
Zokio, zasto mu struktura nije dobro definisana. Kakva je razlika izmedju njegove i tvoje definicije?
[ vlada89 @ 20.03.2006. 14:03 ] @
Buffy, radi sa fscanf(), ali cita samo prvi slog.Inace datoteku cini struct koja ima samo jedno polje - ime -.Ja zelim da procitam sva imena iz file-a koji sam formirao nekim drugim programom.Thank you.
[ Buffy @ 20.03.2006. 15:02 ] @
postuj nam ulaznu datoteku.
[ vlada89 @ 20.03.2006. 16:34 ] @
Buffy, evo koda za formiranje file-a na disku:
code:
#include<stdio.h>
#include<conio.h>
main()
{
FILE *ulaz;
struct slog{char ime[10];};
slog pod;
printf("unesi ime osobe\n");
gets(pod.ime); //ucitam string u polje structure
ulaz=fopen("nova.dat","a");
fwrite(&pod,sizeof(pod),1,ulaz); //upis u file
fclose(ulaz);
getch();
}
ovaj program radi ,tj,koliko puta se pozove , toliko puta upise ime u datoteku.Iz notepad_a moze da se pogleda sadrzaj .Problem je kod ispisivanja sadrzaja na ekran. Ispise samo prvo ime.
[ vlada89 @ 20.03.2006. 19:12 ] @
Uradjeno na sledeci nacin:
1.) koristiti fgetc(ime_file) funkciju za citanje jednog char-a a zatim :
2.) sa putchar(ch) ispis tog char-a na ekran
#include<stdio.h>
#include<conio.h>
main()
{
FILE *ulaz; char ch;
struct slog{char ime[10];};
slog pod;
ulaz=fopen("nova.dat","r");
fseek(ulaz, 0, SEEK_SET);
do
{
/* cita char iz file-a */
ch = fgetc(ulaz);
/* ispisuje char ne ekran */
putchar(ch);
} while (ch != EOF);
fclose(ulaz);
getch();
}
hvala Buffy na idejama.
[ leka @ 20.03.2006. 20:23 ] @
Ljudi, zar ne mozete kao sav normalan svet da saljete sors kod unutar CODE tagova???
Zar ovo:
Code:
#include<stdio.h>
#include<conio.h>
int main()
{
FILE *ulaz; char ch;
struct slog{char ime[10];};
slog pod;
ulaz=fopen("nova.dat","r");
fseek(ulaz, 0, SEEK_SET);
do {
/* cita char iz file-a */
ch = fgetc(ulaz);
/* ispisuje char ne ekran */
putchar(ch);
} while (ch != EOF);
fclose(ulaz);
getch();
}
nije lepse nego:
#include<stdio.h>
#include<conio.h>
main()
{
FILE *ulaz; char ch;
struct slog{char ime[10];};
slog pod;
ulaz=fopen("nova.dat","r");
fseek(ulaz, 0, SEEK_SET);
do
{
/* cita char iz file-a */
ch = fgetc(ulaz);
/* ispisuje char ne ekran */
putchar(ch);
} while (ch != EOF);
fclose(ulaz);
getch();
}
????
[ zokio @ 20.03.2006. 23:57 ] @
Pa daj Buffy malo bolje pogledaj njegovu i moju definiciju strukture...
Sta tebi compiler zna sta njemu znaci "slog pod;", a "struct slog pod;" bi vec imalo sljedeće
značenje , a to je struktura slog tipa pod, e sad ili su mene krivo naucili i moj compiler VS 2003 jer navedena naredba
--slog pod;-- ne znaci nista, u tome je razlika ili se varam, moze tu da se ubaci***
typedef struct slog nesto;
pa je onda OK ***nesto pod; ***
vlada89
I nisi nam uopce dobro objasnio sta se trazi u zadatku ::
Citat: @vlada89
Dakle , ovo je kod jednog programa koji cita i ispisuje imena iz nekog file-a ulaz , ali samo za prvi slog
ali dobro, nakraju je bitno je da si dosao do rjesenja.
P.S
I sta ce ti struktura za ispis iz datoteke, stavio si je tamo bespotrebno ! ! !
[ vlada89 @ 21.03.2006. 10:39 ] @
Mislio sam da treba ispis is file-a da ide u strukturu ,mada sada shvatam da se moze kreirati neka promenjiva npr. char pomocna[10] i da se u nju ucitavaju podaci . Hvala za sugestije.
ps.
Ubuduce saljem kod preko Code tagova.Hvala.
ps.
moram jos da savladam prednost odnosno mane izmedju tekstualnih i binarnih datoteka .Koristim BCB6 , a od literature
1.) programiranje u C jeziku Z.Tosic
2.) Programiranje u C jeziku Laslo Kraus.
3.) Takodje sam sa net-a skinuo i sve Krausove zbirke zadataka za C jezik.
4.) www.cplusplus.com tutorial
ps.Nisam bas najzadovoljniji Krausovim objasnjenjima kada je u pitanju rad sa datotekama.
[ Buffy @ 21.03.2006. 20:51 ] @
ni jedan c++ kompajler ne bi trebao da prijavi gresku ako stavis:
Code:
slog pod;
Pozdrav!
[ vlada89 @ 22.03.2006. 10:15 ] @
Buffy, tacno je ovo sto tvrdis.
Pozdrav.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|