📄 test.c
字号:
#include <stdio.h>
#define LINE_LEN 1728
#define NUM(p) sizeof(p)/sizeof(cbak)
typedef struct whiterl
{int wnum;
char *wcode;
} cbak;
char *wc[64]={
"00110101", //0
"000111", //1
"0111", //2
"1000", //3
"1011", //4
"1100", //5
"1110", //6
"1111", //7
"10011", //8
"10100", //9
"00111", //10
"01000", //11
"001000", //12
"000011", //13
"110100", //14
"110101", //15
"101010", //16
"101011", //17
"0100111", //18
"0001100", //19
"0001000", //20
"0010111", //21
"0000011", //22
"0000100", //23
"0101000", //24
"0101011", //25
"0010011", //26
"0100100", //27
"0011000", //28
"00000010", //29
"00000011", //30
"00011010", //31
"00011011", //32
"00010010", //33
"00010011", //34
"00010100", //35
"00010101", //36
"00010110", //37
"00010111", //38
"00101000", //39
"00101001", //40
"00101010", //41
"00101011", //42
"00101100", //43
"00101101", //44
"00000100", //45
"00000101", //46
"00001010", //47
"00001011", //48
"01010010", //49
"01010011", //50
"01010100", //51
"01010101", //52
"00100100", //53
"00100101", //54
"01011000", //55
"01011001", //56
"01011010", //57
"01011011", //58
"01001010", //59
"01001011", //60
"00110010", //61
"00110011", //62
"00110100" //63
};
char *bc[64]={
"0000110111", //0
"010", //1
"11", //2
"10", //3
"011", //4
"0011", //5
"0010", //6
"00011", //7
"000101", //8
"000100", //9
"0000100", //10
"0000101", //11
"0000111", //12
"00000100", //13
"00000111", //14
"000011000", //15
"0000010111", //16
"0000011000", //17
"0000001000", //18
"00001100111", //19
"00001101000", //20
"00001101100", //21
"00000110111", //22
"00000101000", //23
"00000010111", //24
"00000011000", //25
"000011001010", //26
"000011001011", //27
"000011001100", //28
"000011001101", //29
"000001101000", //30
"000001101001", //31
"000001101010", //32
"000001101011", //33
"000011010010", //34
"000011010011", //35
"000011010100", //36
"000011010101", //37
"000011010110", //38
"000011010111", //39
"000001101100", //40
"000001101101", //41
"000011011010", //42
"000011011011", //43
"000001010100", //44
"000001010101", //45
"000001010110", //46
"000001010111", //47
"000001100100", //48
"000001100101", //49
"000001010010", //50
"000001010011", //51
"000000100100", //52
"000000110111", //53
"000000111000", //54
"000000100111", //55
"000000101000", //56
"000001011000", //57
"000001011001", //58
"000000101011", //59
"000000101100", //60
"000001011010", //61
"000001100110", //62
"000001100111" //63
};
cbak wcbak[27]={
{64, "11011"},
{128, "10010"},
{192, "010111"},
{256, "0110111 "},
{320, "00110110"},
{384, "00110111"},
{448, "01100100"},
{512, "01100101"},
{576, "01101000"},
{640, "01100111"},
{704, "011001100"},
{768, "011001101"},
{832, "011010010"},
{896, "011010011"},
{960, "011010100"},
{1024, "011010101"},
{1088, "011010110"},
{1152, "011010111"},
{1216, "011011000"},
{1280, "011011001"},
{1344, "011011010"},
{1408, "011011011"},
{1472, "010011000"},
{1536, "010011001"},
{1600, "010011010"},
{1664, "011000"},
{1728, "010011011"}
};
cbak bcbak[27]={
{64, "0000001111"},
{128, "000011001000"},
{192, "000011001001"},
{256, "000001011011"},
{320, "000000110011"},
{384, "000000110100"},
{448, "000000110101"},
{512, "0000001101100"},
{576, "0000001101101"},
{640, "0000001001010"},
{704, "0000001001011"},
{768, "0000001001100"},
{832, "0000001001101"},
{896, "0000001110010"},
{960, "0000001110011"},
{1024, "0000001110100"},
{1088, "0000001110101"},
{1152, "0000001110110"},
{1216, "0000001110111"},
{1280, "0000001010010"},
{1344, "0000001010011"},
{1408, "0000001010100"},
{1472, "0000001010101"},
{1536, "0000001011010"},
{1600, "0000001011011"},
{1664, "0000001100100"},
{1728, "0000001100101"}
};
char pcendl[]="000000000001";
main(){
FILE *apreader = NULL;
FILE *apwriter = NULL;
int ailcnt = 0;//if the end of line
char acsta;//'0' white '1' black
int aicnt = 0;
int aifcnt = 0;
char actemp;
if((apreader = fopen("source.txt", "r")) == NULL)
{
printf("open file source.txt fail!");
return;
}
if((apwriter = fopen("result.txt", "w+")) == NULL)
{
printf("create file result.txt fail!");
return;
}
if(fputs(pcendl, apwriter) !=0)
{
printf("Error in writing!");
return;
}
while((actemp = fgetc(apreader)) !=EOF)
{
if(ailcnt == 0)
{
if(actemp == '0')
{
acsta = '0';
}
else
{
acsta = '1';
if(fputs(wc[0], apwriter) !=0)
{
printf("Error in writing!");
return;
}
}
}
if(++ailcnt == LINE_LEN)
{
if(acsta == '0' && actemp == '1')
{
if(aicnt < 64)
{
if(fputs(wc[aicnt], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '1';
aicnt = 0;
}else
{
for(aifcnt = 0; aifcnt < NUM(wcbak); aifcnt++)
{
if(wcbak[aifcnt].wnum > aicnt)
{
break;
}
}
if(fputs(wcbak[aifcnt-1].wcode, apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(wc[aicnt-wcbak[aifcnt-1].wnum], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '1';
aicnt = 0;
}
if(fputs("1", apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(pcendl, apwriter) !=0)
{
printf("Error in writing end of line!");
return;
}
aicnt = 0;
ailcnt = 0;
}
if(acsta == '1' && actemp == '0')
{
if(aicnt < 64)
{
if(fputs(bc[aicnt], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '0';
aicnt = 0;
}
else
{
for(aifcnt = 0; aifcnt < NUM(bcbak); aifcnt++)
{
if(bcbak[aifcnt].wnum > aicnt)
{
break;
}
}
if(fputs(bcbak[aifcnt-1].wcode, apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(bc[aicnt-bcbak[aifcnt-1].wnum], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '0';
aicnt = 0;
}
if(fputs("0", apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(pcendl, apwriter) !=0)
{
printf("Error in writing end of line!");
return;
}
aicnt = 0;
ailcnt = 0;
}
if(acsta =='0' && actemp == '0')
{
if(++aicnt < 64)
{
if(fputs(wc[aicnt], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '1';
aicnt = 0;
}else
{
for(aifcnt = 0; aifcnt < NUM(wcbak); aifcnt++)
{
if(wcbak[aifcnt].wnum > aicnt)
{
break;
}
}
if(fputs(wcbak[aifcnt-1].wcode, apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(wc[aicnt-wcbak[aifcnt-1].wnum], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '1';
aicnt = 0;
}
if(fputs(pcendl, apwriter) !=0)
{
printf("Error in writing end of line!");
return;
}
aicnt = 0;
ailcnt = 0;
}
if(acsta =='1' && actemp == '1')
{
if(++aicnt < 64)
{
if(fputs(bc[aicnt], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '0';
aicnt = 0;
}
else
{
for(aifcnt = 0; aifcnt < NUM(bcbak); aifcnt++)
{
if(bcbak[aifcnt].wnum > aicnt){
break;
}
}
if(fputs(bcbak[aifcnt-1].wcode, apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(bc[aicnt-bcbak[aifcnt-1].wnum], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '0';
aicnt = 0;
}
if(fputs(pcendl, apwriter) !=0)
{
printf("Error in writing end of line!");
return;
}
aicnt = 0;
ailcnt = 0;
}
}
else if(acsta == '0' && actemp == '1')
{
if(aicnt< 64)
{
if(fputs(wc[aicnt], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '1';
aicnt = 0;
}else
{
for(aifcnt = 0; aifcnt < NUM(wcbak); aifcnt++)
{
if(wcbak[aifcnt].wnum > aicnt)
{
break;
}
}
if(fputs(wcbak[aifcnt-1].wcode, apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(wc[aicnt-wcbak[aifcnt-1].wnum], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '1';
aicnt = 0;
}
}
else if(acsta == '1' && actemp == '0')
{
if(aicnt < 64)
{
if(fputs(bc[aicnt], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '0';
aicnt = 0;
}
else
{
for(aifcnt = 0; aifcnt < NUM(bcbak); aifcnt++)
{
if(bcbak[aifcnt].wnum > aicnt)
{
break;
}
}
if(fputs(bcbak[aifcnt-1].wcode, apwriter) !=0)
{
printf("Error in writing!");
return;
}
if(fputs(bc[aicnt-bcbak[aifcnt-1].wnum], apwriter) !=0)
{
printf("Error in writing!");
return;
}
acsta = '0';
aicnt = 0;
}
}
else
{
aicnt++;
}
}
for(aifcnt = 0; aifcnt < 7; aifcnt++)
{
if(fputs(pcendl, apwriter) !=0)
{
printf("Error in writing!");
return;
}
}
if(fclose(apreader) == -1)
{
printf("close source.txt fail!");
return;
}
else
{
apreader = NULL;
}
if(fclose(apwriter) == -1)
{
printf("close result.txt fail!");
return;
}
else
{
apwriter = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -