哪位解释一下怎么运行这个(语言-c语言)


#include
#include
#include
int(PageLength)=56;               //页长(一页最大的行数)
int PageWedth=60;                //页宽(一行最大的字符数)
int LeftMargin=10;                 //左空白(一行开始输出的空格数)
int HeadingLength=5;            //头长(一页开始输出的空行数)
int FootingLength=5;             //脚长(每页最后空5行)
int StaringPageNumber=1;    //起始页号
int page=1;         //记录页数
  int i=0;              //循环变量
  char a[5];           //记录page的char类型
  char * aIndex=a;  //数组a的首地址
  //函数声明(后面的函数调用了它)
void linageFull(FILE * fp2,int * linage,int * columns,int * page);

//函数1:
void printOut()      //输出头文件中的所有整形变量
{
//这个函数中的参数全部来自头文件
     printf("\n");
     printf("          格式化文本文件结束\n");
     printf("版面的参数如下: \n");
     printf("页长: %d\n",PageLength);
     printf("页宽: %d\n",PageWedth);
     printf("左空白:  %d\n",LeftMargin);
     printf("头长:   %d\n",HeadingLength);
     printf("脚长:   %d\n",FootingLength);
     printf("起始页号:  %d\n",StaringPageNumber);
     printf("\n");
     printf("      特别说明: 本程序只支持英文格式化,对于中文格式化存在乱码问题。 \n");
     printf("\n");
}

//函数2:
void writeOut(FILE * fp2,char c1)//   输出到文本文件2和屏幕
{
 char ch1;
 ch1=fputc(c1,fp2);//接受从文本文件1中读出的一个字符,并且保存到文本文件2中
 printf("%c",ch1);   //把这个字符输出到外设(屏幕)
}

//函数3:
int zuokongbai(FILE * fp2)   //     左空白
{
  for(i=0;i<10;i++)
      writeOut(fp2,' ');     //循环10次,输出10个空格到文本文件2中
  return i;
}

//函数4:
void pageNumber(FILE * fp2,char * aImdex,int * page)      //输出当前页码
{
     int m,n;       //定义2个整形变量接收page和page%10的值
     m=*page;   //接收page的值
     int i=0;
     while(m!=0)//判断条件为:m的值不为0即page的值不为0
   {
    n=m% 10;
   *(aIndex+i)=n+'0';    //对数组a进行赋值操作,把int类型的page的各位数转换为字符型保存到数组a中,以便于向文本文件2中输出page
   i++;
   m=m/10;
}
//此时page已经保存在数组a中了,开始输出page
for(i=i-1;i>=0;i--)
{
     writeOut(fp2,*(aIndex+i));   //向文本文件2中输出page
}
(*page)++;     //指向下一页
}

//函数5:
void out(int * columns,char * array,int * linage,FILE * fp2,int * page,int * size)//输出
{
  if(((*(columns))+1+strlen(array))>60)//判断这一行是否还能够输出空格加一个单词
{
    //这一行不能再输出了,开始换行
if((*(linage))>50)   //判断这一页是否已经印满
{
  linageFull(fp2,linage,columns,page);    //转到下一页
  for(i=0;i<*(size);i++)
{
   writeOut(fp2,*(array+i));//把保存在数组中的一个字输出到文本文件2中
(*(columns))++;//输出一个字符,这一行的字符数就增加一个
}
   (*(size))=0;//输出之后就开始重新向数组array中读入字符,所以size要归0
  (*(array))='\0';//如果是多个空格连在一起,那么就需要把array数组第一个设为结束字符。
}
else //这一页还没印满,换行后开始输出
{
    writeOut(fp2,'\n');//换行
    (*(linage))++;
    //*(columns)=0;
    (*(columns))=zuokongbai(fp2);   //     左空白10

   for(i=0;i<(*(size));i++)
{
    writeOut(fp2,(*(array+i)));//通过循环向文本文件2中输入字
      (*(columns))++;
 }
(*(size))=0;
(*(array))='\0';
  }
}
else  //这一行还没有满,还可以再输出
{
   writeOut(fp2,' ');
   (*(columns))++;
   for(i=0;i<*size;i++)
{
    writeOut(fp2,*(array+i));
    (*(columns))++;
}
(*(size))=0;
(*(array))='\0';
  }
}
//函数6 
void linageFull(FILE *fp2,int *linage,int *columns,int *page)  //开始打印下一页 
{
    //完成页的尾部格式(空一行后居中输出页码page再空3行) 
    writeOut(fp2,'\n');   //空一行 
    for(i=0;i<29;i++)     //居中输出页码 
    {
        writeOut(fp2,' ');
    }
    pageNumber(fp2,aIndex,page);
    for(i=0;i<3;i++)
    {
        writeOut(fp2,'\n');  //再空3行 
    }
    *linage=0;
    //开始打印第二页。实现输出页首的格式(头长+坐空白) 
    for(i=0;i<5;i++) //头长5 
    {
        writeOut(fp2,'\n');
        *linage++;               // 已经占有linage行 
    }
    *columns=zuokongbai(fp2);   //左空白10 
}

//函数7 
void readIn(FILE *fp1,FILE *fp2)
{
    int blankNumber=0;   //读入文本文件 
    int linage=0;        //记录行数 
    int columns=0;       //记录单行的字节数 
    char array[61]={"\n"};   //存一个单词 
    char *arrayIndex=array;
    int size=0;      //初始化单词的长度 
    for(i=0;i<5;i++)  //头长5 
    {
        writeOut(fp2,'\n');
        linage++;  //已经占有linage行 
    }
    columns=zuokongbai(fp2);
    for(i=0;i<7;i++) //段首缩进8字节 
    {
        writeOut(fp2,' ');
        columns++;
    }
    //以上代码实现了基本的版面参数要求,下面是具体到字母的排版 
    char cl;
    cl=fgetc(fp1); //读入第一个字符 
    while(cl!=EOF) //如果读到结尾了,退出这个函数。否则开始字符的输入输出操作 
    {
        if(cl==' ') //如果字符为空格
        {
            if(strlen(array)==0) //判断空格前是否有一个字
            ;    //没有字不打印 
            else  //有一个字 
            {
                out(&columns,array,&linage,fp2,&page,&size);
            } 
        }
        else if(cl=='@') 
        {
            if(strlen(array)==0)   //判断‘@’字符前是否有一个字
            ;    //没有字不打印 
            else
            {
                out(&columns,array,&linage,fp2,&page,&size);
            }
            if(linage>50)   //判断这一页是否已经印满 
            {
                linageFull(fp2,&linage,&columns,&page);
                
                for(i=0;i<7;i++) //手段缩进8字符 
                {
                    writeOut(fp2,' ');
                    columns++;
                }
            }
            else //这一页没有印满 
            {
                writeOut(fp2,'\n');
                linage++;
                columns=0;
                columns=zuokongbai(fp2);
                for(i=0;i<7;i++)
                {
                    writeOut(fp2,' ');
                    columns++;
                }
            }
        }   
        else
        {
            array[size]=cl;
            size++;
            array[size]='\0';
        }
        cl=fgetc(fp1);
        if(cl==EOF)
        {
            out(&columns,array,&linage,fp2,&page,&size);
            break;
        }
        if(strlen(array)>61)
        {
            printf("字符格式错误!哪有这么长的单词!\n");
            break;
        }         
    }
}

//函数8 
int main()
{
    FILE *fp1,*fp2;     //fp1 指向读入的文本文件,p2 指向输出的文本文件保存要格式化文本文件的文件名
    char fileName_one[100];  //保存格式化之后输出文本文件的文件名
    char fileName_two[100];
    printf("请输入要格式化文件的文件名(包括后缀名):\n");
    gets(fileName_one);
    if((fp1=fopen(fileName_one,"r"))=NULL)
    {      
        printf("The file\"%s\"was not fopen!\n",fileName_one);
        exit(0);
    }
    
    //得到要进行格式化的文本文件1的地址
    printf("请输入输出文件的文件名(包括后缀名):\n");
    gets(fileName_two);
    if((fp2=fopen(fileName_two,"a"))==NULL)
    {
        printf("The file\"%s\" was not fopen!\n",fileName_two);
        exit(0);
    }
    //得到格式化后要保存到文本文件 2的地址
    readIn(fp1,fp2);//读入文本文件开始格式化
    printOut();
    fclose(fp1);
    fclose(fp2);
}

你这前3个include后面啥都没跟,就算写的是hallo world也运行不了呀