GSE_ 2021-06-06 18:04 采纳率: 72.7%
浏览 8
已采纳

第12行printf不可以将内容打印出来

#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;
}
  • 写回答

3条回答 默认 最新

  • qfl_sdu 2021-06-06 18:18
    关注

    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就认为字符串结束,所以你这个进去就是结束符,也不会打印。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?