Dělení binárního souboru - skriptem nebo programem

Oak oak.brno na seznam.cz
Úterý Srpen 5 14:57:06 CEST 2003


Dobrý den,

mám image soubor, potřebuji ho rozdělit na X částí. Vím, že každá část má 
začínat na "Øÿá" (ASCII, hexd. to je "d8 ff e1") a končit před začátkem 
další.

Zkoušel jsem KHexEdit; v principu to funguje,ale v 90% při pokusu zkopírovat 
vybraný řetězec (velikostí "větší než menší" :-) do schránky spadne. Navíc 
bych těch cca 150 fotek takto vyklikával asi až do Vánoc. Další hex-editory 
možnost vybrat část souboru jako nový vůbec nemají (zk. jsem ghex,  vche).

Zkusil jsem napsat malý prográmek, ale nefunguje mi správně, neovládám dobře 
žádný klasický programovací jazyk. 

Uvítám jakoukoli použitelnou radu, jak zpracovat skript, nebo program, nebo 
použít nějakých hotových utilit.

Zdraví, Oak.



-------------------------------------------------------

Pozn.: Ten prográmek kopíroval znak po znaku soubor ze vstupního do 
výstupního (potud fungoval :-). Snažil jsem se mu přidat podmínku, že pokud 
nalezne žádanou sekvenci znaků, aby přepnul výstup do nového souboru 
("obr[n].jpeg"). Chybně jsem ale asi začal už u porovnávání, v podmínkách; 
chtělo by to asi hexadecimální zadání hledanýho znaku, ale na to jsem 
bohužel krátkej. V literatuře (Linux, začínáme programovat) jsem nic 
podobnýho bohužel nenašel.

kopy.c:
----------

#include <stdio.h>
#include <stdlib.h>

int main() {

        int a; int b; int c;
	int n; n = 0;

	FILE *in, *out;

	in = fopen("pracovni.img","r");
	out = fopen("file_0.out","w");

	while((c = fgetc(in)) != EOF) {
		// Ø ÿ á  - hledaný řetězec
		if(c == 'á'){
		if(b == 'ÿ'){
		if(a == 'Ø'){
		n = n+1;
			printf ("ahoj");
			out = fopen("obr[n].jpeg","w");
		}
		}
		}
		a = b;
		b = c;
		n = n+1;
		fputc(c,out);
	}
    printf ("\n%e\n",n);
exit(0);
}



Další informace o konferenci Linux