#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char data[10001][10001];
int output(int x,int y)
{
int i,j;
for(i=0;i<=x;i++)
{
for(j=0;j<y;j++)
{
printf("%c",data[x][y]);
}
}
return 0;
}
int main()
{
FILE *fp = fopen("test.txt","w+");
/*the FILE I/O starting x=line y=list*/
int x=0,y=1;//x指向栈顶的下一个元素
char buff;
for(;;)
{
buff = getch();
/*meaning-changed char or normal-char*/
if(buff == '\b' && (x>0||y>1))
{
/*backspace or backline*/
if(y>0)
{
data[x][--y] = 0;
}
else
{
x--;
y = strlen(data[x]);
output(x,y);
}
}
else if(buff == '\r')
{
/*LINE-CHANGE*/
x++;
y=0;
output(x,y);
}
else if(buff == 27)
{
/*save*/
int i,j;
for(i=0;i<=x;i++)
{
for(j=0;j<y;j++)
{
fprintf(fp,"%c",data[i][j]);
}
}
fclose(fp);
break;
}
else
{
data[x][y] = buff;
y++;
output(x,y);
}
}
system("pause");
return 0;
}
39行的output,在y <=0的时候才调用,y的0的时候output里面根本不会打印。
47行,把y=0了,进入output里,y=0,第二个for循环,j<y永远不成立,也不会打印
67行,你设的y=1,也就是所有行都是从a[i][1]开始保存的字符,a[i][0]这个是0,0是字符串的结束标志,在打印的时候碰到0就认为字符串结束,所以你这个进去就是结束符,也不会打印。
是不是没满足打印
不知道你这个问题是否已经解决, 如果还没有解决的话: