All pastes #442465 Raw Edit

Unnamed

public java v1 · immutable
·published 2007-04-16 09:46 UTC
rendered paste body
// **************************************// * Tar - zlaganje datotek v arhiv		*// * 									*// * 		Jernej Virag				*// **************************************#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{	char ime[FILENAME_MAX];	long offset;} F_Info;int main(int argc, char* argv[]){	//deklaracije spremenljivk	FILE *arhiv;	FILE *input;	long headerpos=0;	F_Info *fileinfo; //shranjuje podatke o zapisanih datotekah v arhivu	char *buffer;	int i;		if (argc<3)	{ printf("Premalo parametrov. \n"); return -1;}		arhiv=fopen(argv[1],"wb");	if (arhiv==NULL)		{ printf("Napaka pri pisanju arhiva."); return -1;}	//zapišemo glavo, da lahko kasneje prepoznamo zadevo	buffer=(char*)malloc(4*sizeof(char));	strcpy(buffer,"ARH");		fwrite(buffer,sizeof(char),3,arhiv);	//začnemo pisati posamezne datoteke	fileinfo=(F_Info*)malloc(sizeof(F_Info));	buffer=(char*)realloc(buffer,sizeof(char));		for (i=2; i<argc;i++)	{		printf("Pišem %s. \n",argv[i]);		fileinfo=realloc(fileinfo,(i-1)*sizeof(F_Info));		strcpy(fileinfo[i-2].ime,argv[i]); //zapišemo ime datoteke v strukturo		fileinfo[i-2].offset=ftell(arhiv); //zapišemo položaj začetka datoteke		input=fopen(argv[i],"rb");		if (input==NULL)     				// napaka pri odpiranju, postopek prekinjen			{printf("Napaka pri odpiranju %s!\n",argv[i]); return -1;}		//prekopiramo vsebino datoteke				do		{			fread(buffer,sizeof(char),1,input);			fwrite(buffer,sizeof(char),1,arhiv);		} while(!feof(input));		fclose(input);	}		//datoteke so zapisane, moramo še zapisati njihov položaj	*buffer=(char)1; //ločimo z znakom 1	headerpos=ftell(arhiv); // shranimo si položaj začetka informacij	fwrite(buffer,sizeof(char),1,arhiv);		for (i=0; i<(argc-2); i++)	{		printf("Zapisujem podatke o %s. \n",fileinfo[i].ime);		fwrite(fileinfo[i].ime,sizeof(char),strlen(fileinfo[i].ime)+1,arhiv);		fwrite(&fileinfo[i].offset,sizeof(long),1,arhiv);	} 	//na čistem koncu bo podatek o začetku informacij	fwrite(&headerpos,sizeof(long),1,arhiv);	fclose(arhiv);	free(fileinfo);	free(buffer);	printf("Končano. \n");	return 0;}