Zápis do binárního souboru po částech – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zápis do binárního souboru po částech – C / C++ – Fórum – Programujte.comZápis do binárního souboru po částech – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Ramon
~ Anonymní uživatel
2 příspěvky
26. 3. 2014   #1
-
0
-

Ahoj nevíte někdo kde dělách chybu? po binárním přečtení celého souboru bych ho chtěl po částech zapsat do jiného, ale to se mi podaří pouze pokud se jedná o text. Např. u obrázků má obrázek správnou velikost, ale nezobrazí se. 

FILE *op;
FILE *obr;
op = fopen("/home/honza/klient/dir/output.jpeg", "ab");
obr = fopen("/home/honza/klient/index.jpeg", "rb");

if (op == NULL) {
	fputs("File error", stderr);
	return -1;
}
char buf[8192];
int lSize;
// obtain file size:
fseek (obr , 0 , SEEK_END);
lSize = ftell (obr);
rewind (obr);
// copy the file into the buffer:
fread (buf,1,lSize,obr);
//budu udrzovat offset od kud budu cist
int offset = 0;
int BLOCK_SIZE = 16;
int size = 4582;

char idata[BLOCK_SIZE];
while (1) {
	int length;
	//offset je dostatecne maly, ctu vsech 16B
	if (offset + BLOCK_SIZE < size) {
		length = BLOCK_SIZE;
	} else {
		length = size - offset;
	}
	memset(idata, 0, BLOCK_SIZE);
	strncpy(idata, buf + offset, BLOCK_SIZE);
	fwrite(idata, 1, length, op);
	offset += BLOCK_SIZE;
	if (offset >= size) {
		break;
	}
}
fclose(op);
fclose(obr);
Nahlásit jako SPAM
IP: 2001:718:2:80e:d031:7f04:...–
Reklama
Reklama
KIIV+42
God of flame
26. 3. 2014   #2
-
0
-

mozna zkus misto strncpy pouzit memcpy... strcpy a strncpy je na retezce - tj. kontroluje konec retezce \0

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Ramon
~ Anonymní uživatel
2 příspěvky
26. 3. 2014   #3
-
0
-

Díky, pomohlo

Nahlásit jako SPAM
IP: 2001:718:2:80e:d031:7f04:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 80 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý