#include<stdio.h>
#include<windows.h>
#define N 5000
void encoding(char *);
//void decoding(char *);
int main(void)
{
int c;
FILE *fp=fopen("RLE.txt", "w");
char array[N]={0, };
printf("입력\n");
scanf("%s",array);
fprintf(fp, "%s", array);
printf("인코딩합니다.\n");
fclose(fp);
encoding(array);
Sleep(5000);
return 0;
}
void encoding(char rle[N])
{
FILE *efp=fopen("encoding.txt", "w");
char encode[N], cnt=1, idx=0;
int i;
for(i=0; i<N; i++)
{
if(rle[i]=='NULL')
{
printf("Finish\n");
break;
}
if(rle[i]!=rle[i+1])
{
encode[idx]=cnt;
encode[idx+1]=rle[i];
cnt=1;
printf("%d%c\n", encode[idx], encode[idx+1]);
fputc(encode[idx],efp);
fputc(encode[idx+1],efp);
idx+=2;
}
else
cnt++;
}
printf("%s", encode);
fclose(efp);
}
RLE압축파일을 만들고있어.. 예를들면 AAABBBCCC가 입력되면 3A3B3C가 입력되게하는거야
근데 encoding함수에서 encoding.txt파일에 이걸 옮겨야하는데
if문 안에 print는 제대로 나오거든 ㅜㅜ 근데 텍스트파일에 들어갈때 이상한 문자가 들어가
원래 fputc로 한건아니고 fprintf도 써보고 별지랄을 다해봤는데도 제대로 안들어가는데 어떻게하지..
텍스트파일에 숫자+문자가 있는 배열을넣을땐 다르게해야하는거야??
알려조 형들
소스는 대충 봐서 네 의도가 맞는지는 모르겠는데 네 말을 들어보면 값을 제대로 들어가고 있음 근데 바이너리로 들어가는거라서 네가 보기에는 이상한 문자가 들어가는거라는거 같은데 그럼 sprintf로 문자열로 변환한 다음에 그 문자열을 파일에 써라 그게 네가 원하는거 같다
ㄴ고마워형 한번해볼게
안되는데
일단은 if(rle[i]=='NULL')가 잘못됬지.