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条)

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应