gpt4 book ai didi

c - 理解 k&r 中的 entab 示例代码

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

我正在自学 C 并通过 K&R 进行工作。我正在做练习 1-21:

Write a Program entab that replaces strings of blanks by the minimum number of tabs and blanks to acheive the same spacing. Use the same tab stops as for detab.

我在做这个练习时遇到了困难,所以我在网上找到了解决方案,但我不明白。有人可以解释一下这段代码是如何工作的吗?

#include<stdio.h>
#define TABINC 8

int main(void)
{
int nb,nt,pos,c;

nb = 0;
nt = 0;

for(pos=1;(c=getchar())!=EOF;++pos)
if( c == ' ')
{
if((pos % TABINC) != 0)
++nb;
else
{
nb = 0;
++nt;
}
}
else
{
for( ; nt > 0 ; --nt)
putchar('\t');
if( c == '\t')
nb = 0;
else
for( ; nb > 0; --nb)
putchar(' ');

putchar(c);

if(c == '\n')
pos = 0;
else if ( c == '\t')
pos = pos + ( TABINC - (pos -1) % TABINC) - 1;
}

return 0;
}

最佳答案

代码是

  • 当在 '\t' 的倍数位置遇到空格 ( ) 时,放置制表符 ( TABINC ) ,即选项卡的大小。

  • 遇到制表符时,空格数会重置。这是为了更喜欢使用 Tab 来到达 Tabstop

举例说明:- * 中显示的空格- 标签显示在

column: 1 2 3 4 5 6 7 8 9 10
input : * * * * h e l * * w
output: <tab>hel<tab>*w

在此示例中,当在可被 TABINC 整除的每个列位置遇到空格时,即 4(在本例中),插入制表符“\t”。否则空间。

希望这能给您一些想法。

关于c - 理解 k&r 中的 entab 示例代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26395097/

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