파일 자르기.

progcom의 이미지

갑작스레 필요하다는 요청이 들어와서, 날림으로 만든겁니다.
POSIX OS라면 split 를 쓰면 되지만, 불행하게도 원한 사람이 윈도우를 사용하고 있어서... :x

오류 확인도 제대로 안한 소스지만, 그냥 가지고 노는 셈치고~

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

#define DEFAULT_SIZE 1024 * 200 /* 200kB */

int main(int argc, char* argv[])
{
	FILE *fin;
	FILE *fout;
	size_t ss = DEFAULT_SIZE;
	size_t sr;
	int i;
	char *buffer;
	char filename[1024];

	switch (argc) {
		case 3:
			ss = (size_t) atoi(argv[2]) * 1024;
		case 2:
			fin = fopen(argv[1], "r");
			if (fin == NULL) {
				fprintf(stderr, "file '%s' not found\n",
						argv[1]);
				return -1;
			}
			break;

		default:
			fprintf(stderr, "usage: split file [kB]\n");
			return -1;
	}

	buffer = (char *) malloc(ss * sizeof(char));

	for (i = 0; (sr = fread(buffer, sizeof(char), ss, fin)); i++) {
		snprintf(filename, 1024, "%s.%02d", argv[1], i);
		fout = fopen(filename, "w");
		fwrite(buffer, sizeof(char), sr, fout);
		fclose(fout);
	}

	free(buffer);
	fclose(fin);

	printf("file %s splited into %d piece\n", argv[1], i);

	return 0;
}
Forums: