Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
pajopatak Forumaš(ica)
Pridružen/a: 25. 10. 2009. (22:20:04) Postovi: (BE)16
|
|
[Vrh] |
|
spot137 Forumaš(ica)
Pridružen/a: 02. 11. 2009. (13:33:18) Postovi: (55)16
Spol:
|
|
[Vrh] |
|
kkarlo Forumaš(ica)
Pridružen/a: 19. 05. 2010. (08:43:59) Postovi: (1B2)16
Spol:
|
Postano: 9:18 uto, 31. 5. 2011 Naslov: |
|
|
Znači...vezano za datoteke...neznam da li sam dobro shvatio:
1. Nebitno da li ce upis u datoteku binarni/neformatirani ili "normalni"/formatirani, datoteku isto otvaramo, fopen("ime_datoteke","namjera_rada"), samo je kod upisa i ispisa razlika, ali sama datoteka se isto otvara...?
2. Sad kad sam nesto isprobavao, upisat binarno u datoteku, brojeve mi lijepo pretvori u hijeroglife , ali string ostavi kako je i bio, tj. lijepo ga se moze pročitat kad se otvori datoteka.
Moja pitanja su:
1. Da li je ovo prvo istina?
2. Da li je normalno da string ostane kako je i bio, ili nesto krivo radim?
Hvala!
Znači...vezano za datoteke...neznam da li sam dobro shvatio:
1. Nebitno da li ce upis u datoteku binarni/neformatirani ili "normalni"/formatirani, datoteku isto otvaramo, fopen("ime_datoteke","namjera_rada"), samo je kod upisa i ispisa razlika, ali sama datoteka se isto otvara...?
2. Sad kad sam nesto isprobavao, upisat binarno u datoteku, brojeve mi lijepo pretvori u hijeroglife , ali string ostavi kako je i bio, tj. lijepo ga se moze pročitat kad se otvori datoteka.
Moja pitanja su:
1. Da li je ovo prvo istina?
2. Da li je normalno da string ostane kako je i bio, ili nesto krivo radim?
Hvala!
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
kkarlo Forumaš(ica)
Pridružen/a: 19. 05. 2010. (08:43:59) Postovi: (1B2)16
Spol:
|
Postano: 9:45 uto, 31. 5. 2011 Naslov: |
|
|
Evo malo konkretnije pitanje. Znači totalno jednostavna stvar, ucita se string, i da ga se upise u binarnu datoteku. Ali kad odem otvorit tu datoteku sa notepadom, i dalje vidim sve normalno procitat... Gdje je greska, jer naslucujem da kad vidim procitat onda to bas i nije binarni zapis, nego standardni, formatirani???
[code:1]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int d;
char s[50];
FILE *s1;
scanf("%[^\n]",s);
s1=fopen("binarna","wb");
d=strlen(s);
fwrite(s,sizeof(char),d,s1);
fclose(s1);
return 0;
}
[/code:1]
EDIT:
Probao sam i samo sa jednim charom, ali i njega mi uredno upise tako da ga mogu procitat...?
Evo malo konkretnije pitanje. Znači totalno jednostavna stvar, ucita se string, i da ga se upise u binarnu datoteku. Ali kad odem otvorit tu datoteku sa notepadom, i dalje vidim sve normalno procitat... Gdje je greska, jer naslucujem da kad vidim procitat onda to bas i nije binarni zapis, nego standardni, formatirani???
Kod: |
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int d;
char s[50];
FILE *s1;
scanf("%[^\n]",s);
s1=fopen("binarna","wb");
d=strlen(s);
fwrite(s,sizeof(char),d,s1);
fclose(s1);
return 0;
}
|
EDIT:
Probao sam i samo sa jednim charom, ali i njega mi uredno upise tako da ga mogu procitat...?
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 10:10 uto, 31. 5. 2011 Naslov: |
|
|
Ne, to je ok da mozes citati s Notepadom (osim same cinjenice da koristis Win :P).
Binarno pisanje znaci "zapisi kakvo je u memoriji". U memoriji, string je niz znakova i tako se zapisuje.
Jednako tako, broj je broj, no tebi "u Notepadu" za ugodno citanje broja treba niz znakova. Dakle:
- u memoriji: broj 1719,
- da bi ugodno citao u Notepadu: niz znakova "1719".
Zato ti brojevi izgledaju kao hijeroglifi, jer ih snimis kao brojeve, a Notepad ih pokusava citati kao nizove znakova.
Inace, ovo gore snimanje stringa funkcionira za jedan string, no ne i za vise. Nigdje nemas oznaku kraja stringa (nul-znak) jer snimas [tt]d[/tt] znakova (umjesto [tt]d[/tt]+1).
Obicno se u binarne datoteke zapisuju podaci fiksne duljine. U tvom primjeru, umjesto [tt]d[/tt] bi islo [tt]50[/tt]. Prava korist toga se vidi kad trebas snimiti [tt]struct[/tt], a ne pojedini string.
Ne, to je ok da mozes citati s Notepadom (osim same cinjenice da koristis Win ).
Binarno pisanje znaci "zapisi kakvo je u memoriji". U memoriji, string je niz znakova i tako se zapisuje.
Jednako tako, broj je broj, no tebi "u Notepadu" za ugodno citanje broja treba niz znakova. Dakle:
- u memoriji: broj 1719,
- da bi ugodno citao u Notepadu: niz znakova "1719".
Zato ti brojevi izgledaju kao hijeroglifi, jer ih snimis kao brojeve, a Notepad ih pokusava citati kao nizove znakova.
Inace, ovo gore snimanje stringa funkcionira za jedan string, no ne i za vise. Nigdje nemas oznaku kraja stringa (nul-znak) jer snimas d znakova (umjesto d+1).
Obicno se u binarne datoteke zapisuju podaci fiksne duljine. U tvom primjeru, umjesto d bi islo 50. Prava korist toga se vidi kad trebas snimiti struct, a ne pojedini string.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
meda Forumaš(ica)
Pridružen/a: 09. 01. 2010. (09:29:23) Postovi: (A0)16
|
Postano: 10:38 sri, 1. 6. 2011 Naslov: |
|
|
[code:1]
FILE *in, *out;
char c, *s;
int i=0, j, k, n=0;
in=fopen("cjsqkyd.in.txt", "rt");
if(in==NULL) exit(0);
out=fopen("cjsqkyd.out.txt", "wt");
if(out==NULL) exit (0);
while(fscanf(in,"%c", &c)>0) n++;
printf("%d", n);
s=(char*)sizeof((n+1)*sizeof(char));
rewind(in);
while(fscanf(in,"%c", &c)>0) {
s[i]=c;
i++;
}
[/code:1]
pokusavam staviti sadrzaj datoteke u string i nikako mi ne uspijeva, a ne znam sto je krivo pa ako moze pomoc..hvala
Kod: |
FILE *in, *out;
char c, *s;
int i=0, j, k, n=0;
in=fopen("cjsqkyd.in.txt", "rt");
if(in==NULL) exit(0);
out=fopen("cjsqkyd.out.txt", "wt");
if(out==NULL) exit (0);
while(fscanf(in,"%c", &c)>0) n++;
printf("%d", n);
s=(char*)sizeof((n+1)*sizeof(char));
rewind(in);
while(fscanf(in,"%c", &c)>0) {
s[i]=c;
i++;
}
|
pokusavam staviti sadrzaj datoteke u string i nikako mi ne uspijeva, a ne znam sto je krivo pa ako moze pomoc..hvala
|
|
[Vrh] |
|
fejky Forumaš(ica)
Pridružen/a: 23. 06. 2010. (16:53:45) Postovi: (3D)16
Spol:
|
|
[Vrh] |
|
meda Forumaš(ica)
Pridružen/a: 09. 01. 2010. (09:29:23) Postovi: (A0)16
|
|
[Vrh] |
|
|