littlebabyyoung 2017-04-17 00:08 采纳率: 66.7%
浏览 1634
已采纳

如何在新建的控制台缓冲区输出换行?

我在控制台程序建立了一个新的缓冲区,用readConsoleOutputCharacterA实现的,但是现在的问题是,用system函数改变了控制台窗口大小后,换行符就不输出,没有换行的作用,或者说占据了很多空格,这是怎么回事,我应该怎么做
以下是实现的部分代码:

HANDLE hOutBuf = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);

SetConsoleActiveScreenBuffer(hOutBuf);

DWORD bytes = 0;

char data [ 800 ] ;

for (char c = 'A'; c <= 'Z'; c++)
{
system("cls");
for (int j = 0; j < 600; j++) {
printf("%c", c);
if (j >= 100 && j % 100 == 0)
printf("\n%d" , j );
}
cout << "\nbytes is " << bytes;

        ReadConsoleOutputCharacterA(hOutput, data, 300, coord, &bytes);
        WriteConsoleOutputCharacterA(hOutBuf, data, 300, coord, &bytes);

        system("pause");
    }

    ![图片说明](https://img-ask.csdn.net/upload/201704/17/1492388180_162720.png)
  • 写回答

3条回答 默认 最新

  • littlebabyyoung 2017-04-17 23:36
    关注

    谢谢大家的回答,现在我已经得到解决问题的方法了,不在新建缓冲区输出一切是正常的,一旦用到Read和WriteConsoleOutputCharacterA两个API函数的话
    他是没有换行的,而且改变窗口大小之后也不会,只能通过填充空格或者其他的符号,使得该行的字符数达到控制台的列数,也就是控制台的cols,然后再次输出就是在第二行了,通过这样来达到换行的目的。再次感谢回答我问题的两位大佬

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

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵