- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXLINE 100
#define MAXWIDTH 50
int plen,cnum,width,cspace;
char table[MAXLINE][MAXWIDTH];
void cleartable(void);
void writetable(void);
void copytable(int line, int column, char buf[MAXWIDTH]);
void strcpy2(int start, int haba, char buf[MAXWIDTH], char buf2[MAXWIDTH]);
int main(void)
{
char buf[MAXWIDTH];
char buf2[MAXWIDTH];
int i;
int line, column, len;
while(1){
gets(buf);
plen=atoi(buf);
if(plen==0)
break;
gets(buf);
cnum=atoi(buf);
gets(buf);
width=atoi(buf);
gets(buf);
cspace=atoi(buf);
// printf("%d %d %d %d\n", plen,cnum,width,cspace);
cleartable();
line=0;
column=0;
while(1){
gets(buf);
len=strlen(buf);
// printf("%8s len=%d ",buf, len);
if(buf[0]=='?'){
// printf("%c\n", buf[0]);
// writetable();
break;
}
if(len<=width){
// printf("len<=width ");
copytable(line,column,buf); // tableにbufを書き込む
line++;
if(line>plen){
line=0;
column++;
if(column==cnum){
// writetable(); // table全部出力
cleartable();
line=0;
column=0;
}
}
}else{
// printf("len>width ");
for(i=0; i<len/width; i++){
strcpy2(i*width,width,buf,buf2); // i文字目からwidth文字分buf2にコピー
copytable(line,column,buf2); // tableにbuf2を書き込む
line++;
if(line>plen){
if(column==0){
column=1;
line=0;
}else{
// writetable(); // table全部出力
cleartable();
line=0;
column=0;
}
}
}
if(len%width>0){ // コピーの残ったものがあったら
// puts("amari");
strcpy(buf2,"..................................................");
strcpy2((len/width)*width,len%width,buf,buf2); // i文字目からwidth文字分buf2にコピー
copytable(line,column,buf2); // tableにbuf2を書き込む
line++;
if(line>plen){
if(column==0){
column=1;
line=0;
}else{
// writetable(); // table全部出力
cleartable();
line=0;
column=0;
}
}
}
}
// printf("line=%d column=%d\n", line, column);
writetable();
}
// writetable();
}
return 0;
}
void cleartable(void)
{
int x,y;
for(y=0; y<MAXLINE; y++){
for(x=0; x<MAXWIDTH; x++){
table[x][y]='.';
}
}
}
void writetable(void)
{
int x,y;
for(y=0; y<plen; y++){
for(x=0; x<width*2+cspace; x++){
printf("%c",table[x][y]);
}
printf("\n");
}
printf("#\n");
}
void copytable(int line, int column, char buf[MAXWIDTH])
{
int i;
int len=strlen(buf);
for(i=0; i<len; i++){
table[column*width+column*cspace+i][line]=buf[i];
}
}
void strcpy2(int start, int haba, char buf[MAXWIDTH], char buf2[MAXWIDTH])
{
int x;
for(x=0; x<haba; x++){
buf2[x]=buf[start+x];
}
}