[ Predrag Damnjanovic @ 29.12.2003. 18:47 ] @
| Code:
char *src = "hi\r\nworld";
FILE *fstream = fopen ("test.txt", "w");
fwrite (src, 1, strlen(src), fstream);
fclose (fstream);
on ce od jednog \r da napravi 2 \r, pa ce fajl da izgleda ovako:
68 69 0D 0D 0A 77 6F 72 6C 64
Dva puta 0D.
Da li sam ja neobavesten, pa koristim pogresnu funkciju (mozda treba write() umesto fwrite() ?), ili je ovo bug u kompajleru ? |
[ Dragi Tata @ 29.12.2003. 19:04 ] @
Nije bug.
Otvorio si fajl u text modu, au tom slučaju se \n interpretira kao \r\n. Jedino kad radiš sa binarnim modom, potrebno je da pišeš \r\n, a u tekstualnom modu je \n sasvim dovoljno, a uz to i portabilno (pod *nixom ostane \n, a pod Windows/DOS itd se "pretvori" u \r\n)
[ Predrag Damnjanovic @ 29.12.2003. 19:41 ] @
Sada su mi jasni svi fenomeni u mom programu... a bilo ih je nekoliko...
funkcija za citanje fajla je tvrdila da je fajl 100 bajta, a strlen() je tvrdio da je fajl 116 bajta ...

[ blaza @ 30.12.2003. 06:11 ] @
Mala digresija.
Cest problem koji se javlja, a vezan je za datu tematiku, je, kada je arhiva (.zip, .arj, .rar) na serveru na kome se nalazi (a bogami i drugi fajlovi) pogresno okarakterisana kao TEXT file , pa prilikom download-a iste na Win platformu, dolazi do umetanja \r karaktera ispred svakog \n od strane servera, te kao rezultat, prilikom otvaranja iste dobijamo poruku "Archive is corrupted. If you downloaded it from the Internet, please retry or contact webmaster" ili sl. Postoje alati koji sluze za popravljanje ovakvih arhiva (isti se mogu napisati za 5 minuta), a neki arhiveri imaju ugradjenu podrsku za popravljanje arhiva koje su na ovaj nacin izmenjene.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.