gpt4 book ai didi

C 文本对齐与填充

转载 作者:行者123 更新时间:2023-11-30 14:40:07 26 4
gpt4 key购买 nike

我有一个简单的函数来打印文本。

while (recvbuf[i] != '\0') {
if (i == 0) {
printf("%+40c", recvbuf[i]);
}
else {
printf("%c", recvbuf[i]);
}
i++;
};

它打印文本,第一个单词(行)以 padding 40 开头。但我想要做的是不仅首先以 padding 40 开始每一行。不知道该怎么做。

感谢您的帮助。

我需要在控制台中输出什么。

             fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd

我现在拥有的。

             fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd

最佳答案

我不确定它是你想要的填充(对我来说,填充在后面,所以我不会使用这个术语)。您想在控制台行的开头添加一些空格格式。

所以你必须定义:控制台宽度,你想要的起始空间。

然后,对于每个要打印的单词,您必须计算是否可以达到控制台宽度。如果是这样,您必须另起一行。

如果需要换行,则必须以空格开头。

#include <ctype.h>
#include <stdio.h>

int word_length(const char *word)
{
int size = 0;
for (; *word && !isspace(*word); ++word)
{
++size;
}
return size;
}

void print_word(const char *word, int size)
{
while(size--)
putchar(*word++);

putchar(' ');

}

void format(int width, int spaces, const char *text)
{
int sol = spaces;
int current_pos = 0;

while (*text)
{
/* size of the current word */
int word_len;

/* if needed, print spaces */
for (; sol != 0; --sol)
{
putchar(' ');
++current_pos;
}

/* get size of next word */
word_len = word_length(text);

if (word_len > width)
{
printf("error, word too long...\n");
return;
}


/* see if writting current word will go over width*/
if (current_pos + word_len > width)
{
sol = spaces;
current_pos = 0;
putchar('\n');
continue;
}

/* print the current word */
print_word(text, word_len);

/* update the cursor position */
current_pos += word_len + 1;

/* position text pointer position on next word */
text += word_len;
while(*text && isspace(*text))
{
++text;
}
}
}

int main(void)
{
char text[] = "fksdpo gfdg fd gdf gdf gdf gfd gdf gd fksdpo gfdg fd gdf gdf gdf gfd gdf gd fksdpo gfdg fd gdf gdf gdf gfd gdf gd fksdpo gfdg fd gdf gdf gdf gfd gdf gd fksdpo gfdg fd gdf gdf gdf gfd gdf gd fksdpo gfdg fd gdf gdf gdf gfd gdf gd";
format(45, 5, text);
return 0;
}

将给出:

     fksdpo gfdg fd gdf gdf gdf gfd gdf gd 
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd
fksdpo gfdg fd gdf gdf gdf gfd gdf gd

关于C 文本对齐与填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55690574/

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