#include <stdio.h>
#include "malloc.h"
#include "stdlib.h"
#define NULL 0
#define LINE 100
#define COLUMN 100
char **ReadFile(FILE *infile,int *line);
main()
{
FILE *infile;
char *c,**p;
int i,j=0,n;
clrscr();
printf("这个程序将文件倒序输出。/n");
while(1)
{
printf("File name:");
gets(c);
infile=fopen(c,"r");
if(infile!=NULL)break;
printf("File %s not found--Try again./n",c);
}
p=ReadFile(infile,&n);
fclose(infile);
if(p==NULL)printf("Error:No enough memory!/n");
else{
for(i=n;i>=0;i--){
while(1)
{
if(p[i][j]=='/n')break;
printf("%c",p[i][j]);
j++;
}
j=0;
printf("/n");
}
}
getch();
}
char **ReadFile(FILE *infile,int *line)
{
int ch,i=0,j=0,li=LINE;
char **arr;
arr=(char *)malloc(li*COLUMN);
if(arr==0)return NULL;
while((ch=getc(infile))!=EOF)
{
arr[i][j]=ch;
j++;
if(ch=='/n')
{
i++;
j=0;
if(i==li)
{
li*=2;
arr=(char *)realloc(arr,li*COLUMN);
if(arr==0)return NULL;
}
}
}
arr[i][j]='/n';
arr[i+1][0]=NULL;
*line=i;
return arr;
}