gpt4 book ai didi

c - 从文件读取时的制表符宽度

转载 作者:行者123 更新时间:2023-11-30 17:55:41 25 4
gpt4 key购买 nike

我正在使用<ncurses.h>终端中简单程序的库。它以传统方式逐字符读取文件:

FILE* f = fopen(filename, "r");
int c;
while ((c = fgetc(f)) != EOF) { /* process c */ }

字符被放入字符数组中。我需要知道终端屏幕上每个字符的 (y,x) 坐标。为此,我将确定屏幕上第一个和最后一个字符的索引保留在另一个数组中。当调整终端窗口大小时,它很容易调整 - 每行由 max_x 组成。字符或更少的字符(如果有 '\n') .

选项卡会导致问题 - 尽管它们被识别为 '\t' ,它们的宽度以及文本界面中的“像素”数量是不同的(当在终端中通过 cat 显示或作为包含文件中所有字符的字符串中的连续字符显示时)。但是,当与文件的其余部分分开时:

if (c == '\t') {...}

它们没有区别。我还尝试打印那些检测到的选项卡并比较光标的位置以获得它们的宽度,但它们看起来再次相同。

读取文件时如何获取制表符的实际宽度?我想将宽度转换为空格数。感谢您的关注和提示。

最佳答案

当然,实际的选项卡宽度取决于您在屏幕上呈现它的方式。对于经典的演示文稿,即每八列一个表格,您必须跟踪制表符所在的列号。然后您可以使用:

tab_width = 8 - column % 8

第一列的column 从 0 开始计数。

关于c - 从文件读取时的制表符宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com