问题描述:在打印社工作的小侯接到一个新任务,需要将一份文本文件data.dic的部分内容按照特殊要求打印。
已知文件有m(<25)行文字,每行最多有n(<80)个ascii字符,打印时按照古文书写格式自上而下,自右向左显示文字内容。比如一个具有5行10列的文件如下:
Nothing is
impossibl
e to a wil
ling heart
.
文件的第1行至第5行按照古文书写格式输出为10行5列的文字如下:
. l e N
i i o
n t m t
g o p h
o i
h a s n
e s g
a w i
r i b i
t l l s
请帮助小侯完成程序设计。
作者:何知令
发表时间2017年3月30日
输入:文件 data.dic 需要输出的内容的起始和结束行数。
已知文件有m(<25)行文字,每行最多有n(<80)个ascii字符,打印时按照古文书写格式自上而下,自右向左显示文字内容。比如一个具有5行10列的文件如下:
Nothing is
impossibl
e to a wil
ling heart
.
文件的第1行至第5行按照古文书写格式输出为10行5列的文字如下:
. l e N
i i o
n t m t
g o p h
o i
h a s n
e s g
a w i
r i b i
t l l s
请帮助小侯完成程序设计。
作者:何知令
发表时间2017年3月30日
输入:文件 data.dic 需要输出的内容的起始和结束行数。
输出:按照古文书写格式输出。
代码:
/*
问题描述:在打印社工作的小侯接到一个新任务,需要将一份文本文件data.dic的部分内容按照特殊要求打印。
已知文件有m(<25)行文字,每行最多有n(<80)个ascii字符,打印时按照古文书写格式自上而下,自右向左显示文字内容。比如一个具有5行10列的文件如下:
Nothing is
impossibl
e to a wil
ling heart
.
文件的第1行至第5行按照古文书写格式输出为10行5列的文字如下:
. l e N
i i o
n t m t
g o p h
o i
h a s n
e s g
a w i
r i b i
t l l s
请帮助小侯完成程序设计。
作者:何知令
发表时间2017年3月30日
输入:文件 data.dic 需要输出的内容的起始和结束行数。
输出:按照古文书写格式输出。
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
int i,j,k,loop,have=0;
int fir,sec;
char ch[25][80],c[80][25];
scanf("%d %d",&fir,&sec);
if((fp=fopen("data.dic","r"))==NULL)
{
printf("cannot open file");
exit(1);
}
for(i=0; i<25; i++)
{
for(j=0; j<80; j++)
{
ch[i][j]=fgetc(fp);
if(ch[i][j]=='\n')
{
for(k=j+1; k<80; k++)
ch[i][k]=' ';
break;
}
}
if(ch[i][j]==EOF)
{
break;
}
}
for(i=0; i<80; i++)
{
loop=0;
for(j=sec-1; j>=fir-1; j--)
{
printf("%c",ch[j][i]);
if(loop==sec-fir)
printf("\n");
loop++;
if(ch[j][i]=='\n')
break;
}
for(j=fir-1;j<=sec-1;j++)
{
if(ch[j][i]=='\n')
have++;
}
if(have==sec-fir+1)
break;
}
return 0;
}
知识点总结:文件操作与数组操作以及循环控制
学习心得:做了很久,我估计OJ系统判断有BUG,有些东西他测不了,比如长度参差不齐的那种。