1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include<stdio.h> #include<string.h> #include<stdlib.h> long file_length(char filename[]); //파일의 길이 구하는 함수 int RLECompression(FILE *src, char *srcname); //RLE방법을 이용한 압축 int RLEDecompression(FILE *src); //RLE방법을 이용한 압축해제 /* main o_filename : 압축할 파일이름, c_filename : 압축된 파일이름 압축할 파일을 RLECompression 함수를 이용하여 압축하여 text.rle로 압축 text.rle파일을 RLEDecompression함수를 이용하여 압축풀기 src, decomp_src : 압축을 하고, 풀기위한 파일 포인터 o_filesize, c_filesize : 소스파일과, 압축파일의 크기 */ int RLUnComp(FILE *src, FILE *dst) { long header=0; // 헤더를 저장한다. long len; // 압축을 해제했을 때의 데이터 크기 long count=0; // 압축을 얼마나 해제했는가 int i; int flag_byte; // flag_byte int data_byte; // data_byte for(i=0;i<4;i++) { header|=((fgetc(src))<<(8*i)); // 뒤에서부터 4바이트를 읽는다 } if((header&0xff)!=0x30) { printf("This is not an RLE data\n"); return -1; } printf("This is compressed with RLE\n"); len=header>>8; // 뒤의 한 바이트는 잘라낸다 while(count<len) { flag_byte=fgetc(src); // flag_byte를 읽고 if(flag_byte&0x80) { // 압축 데이터라면 data_byte=fgetc(src); // data_byte를 읽어 for(i=0;i<(flag_byte&0x7f)+3;i++) { fputc(data_byte,dst); count++; // (flag_byte&0x7f)+3 만큼 반복한다. } } else { // 압축되지 않은 데이터라면 for(i=0;i<(flag_byte&0x7f)+1;i++) { data_byte=fgetc(src); fputc(data_byte,dst); // (flag_byte&0x7f)+1 만큼의 count++; // data_byte를 그대로 출력한다. } } } return 0; } | cs |
디버깅 했는데 파일을 열 수 없대요ㅠㅠ
알아서해....
해주라해줭
제발ㅠㅠㅠㅠ
파일이 없나보지
상위폴더 열기해서 파일 넣었는데ㅠㅠㅠ안됨여 도와주세요
c드라이브에 넣어봅니다
근데 파일 이름 string.txt으로 해도돼??
맘대루
정말고마어ㅠㅠㅠ근데 계속 그런당 ㅠㅠㅠ에휴ㅠㅠ미안 ㅠㅠ
파일 패스를 절대로 해주던가