⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 输入一串01字符
💻 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 + -