帮忙看一下 那里出错了
帮忙看一下 哪里出错了/*次程序的功能的读入一个文本文件 然后对此进行一些处理 然后在存到一个文件里面*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
FILE *infile, *outfile;
unsigned int qianj[5] = {3906,3921,3926,3928,3936}; //五个前加字的编码值
unsigned int houj[10] = {3906,3908,3921,3923,3926,3928,3936,3938,3939,3942}; //十个后加字的编码值
unsigned int zaihj[2] = {3921,3942}; //两个在后加字的编码值
unsigned int shangj[3] = {3938,3939,3942};
void panduan()
{
int i = 0,j;
char *b;
unsigned int tibet[8],c,a;
for( ; ;)
{
do {tibet[i]=c; i++;}
while((c = getc(infile)) != 3851 || c != 3865) ;
switch(i) // 判断基字位置 然后把基字放到最前面
{
case 1: ; break;
case 2: if(tibet[2] > 3984) ; //第二个字符的编码区域为OF90以上的 则第二个为基字 不换顺序 否则换顺序
else c = tibet[0]; tibet[0] = tibet[1]; tibet[1] = c;
default: if(b = strchr(qianj[5],tibet[j++]) != NULL)
{if(b = strchr(houj[5],tibet[j++]) != NULL)
{if(b = strchr(zaihj[5],tibet[j]) != NULL) ; //第一个为基字 顺序不变
else ;}
else if(b = *strchr(shangj[5],tibet[j-1]) != NULL)
{a = tibet[0]; tibet[0] = tibet[2]; tibet[2] = a;
a = tibet[2]; tibet[2] = tibet[1]; tibet[1] = a;}//第三个为基字
else
{c = tibet [0]; tibet[0] = tibet[1]; tibet[1] = c;}//第二个为基字
}
else if(b = *strchr(qianj[5],tibet[0]) != NULL) //第二个位基字
{c = tibet [0]; tibet[0] = tibet[1]; tibet[1] = c;}
else ; //第一个为基字
}
for(j = 0; j < i; j ++)
fputc(tibet[j],outfile);
if(c == EOF) break; //读完字符推出循环
}
fclose(infile); fclose(outfile);
}
int main(int argc, char *argv[])
{
char *s;
if (argc != 4) {
printf("'lzss e file1 file2' encodes file1 into file2.\n"
"'lzss d file2 file1' decodes file2 into file1.\n"
"%d\n",argc);
return EXIT_FAILURE;
}
printf("ok\n");
if ((s = argv[1], s[1] || strpbrk(s, "DEde") == NULL)
|| (s = argv[2], (infile = fopen(s, "rb")) == NULL)
|| (s = argv[3], (outfile = fopen(s, "wb")) == NULL)) {
printf("??? %s\n", s); return EXIT_FAILURE;
}
panduan();
}