我正在尝试为每个空格添加一个空格,直到column = 0
. 我不知道该怎么做。
问题如下。如果你看一份报纸,你会发现文章有理由适合列。编写一个程序,读取报纸的列宽,然后读取一行文本。对齐文本行以适合该宽度的列。当您的程序运行时,屏幕应如下所示:
Enter the width of the column: 40
Enter a line of text: Good morning how are you?
12345678901234567890123456789012345678901234567890...
Good morning how are you?
理由是通过计算文本中的空白数来完成的。在上面的示例中,有 4 个间隙。然后每个间隙都必须添加空格。额外空间的数量必须尽可能均匀地分配。在上面的示例中,前三个间隙各有 5 个空格,最后一个间隙有 4 个空格。
笔记:
- 如果文本比列长,那么您必须报告错误——不要尝试将其分成两行!
- 假设文本中包含多个单词。
- 请注意由 123456789012345678.... 组成的标题行,这对于检查您的结果很有用。您可以随意设置此标题行 - 70 个空格将是一个有用的长度。
谢谢
#include <stdio.h>
int clear_input_buffer(void);
int column;
int c;
int g;
int e;
int space;
int length;
char line[40];
int main(){
g = 0;
printf("enter width of column\n");
scanf("%d", &column);
printf("enter line of text\n");
clear_input_buffer();
gets(line);
c = 0;
while(c <= column){
if(g <= 9)
{
printf("%d", g);
g = g + 1;
c = c + 1;
}
else
{
g = 0;
printf("%d", g);
g = g + 1;
c = c + 1;
}
}
printf("\n%s", line);
space = 0;
length = 0;
for( e = 0; line[e] != '\0'; e++ )
{
length = length + 1;
if( line[e] == ' ' )
space = space + 1;
}
column = column - length;
for( e = 0; line[e] != '\0'; e++ )
{
if((line[e] == ' ') && (column > 0))
{
add space to here
column = column - 1;
}
}
printf("%d\n", space);
printf("%d", length);
printf("%s", line);
}
int clear_input_buffer(void) {
int ch;
while (((ch = getchar()) != EOF) && (ch != '\n')) /* void */;
return ch;
}