gpt4 book ai didi

c - 给字符串添加空格

转载 作者:行者123 更新时间:2023-12-01 23:54:41 26 4
gpt4 key购买 nike

我尝试向每个空格添加一个空格,直到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 个空格。

注释:

  1. 如果文本比列长,那么您必须报告错误 - 不要尝试将其分成两行!
  2. 假设文本中包含多个单词。
  3. 请注意由 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;
}

最佳答案

这就是我做的。这远非理想,但你明白了。您只需输入条件,例如当输入的字符串大于或等于 40 个字符时,即可跳过该过程。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void)
{
int i = 0; // first just initialiaze stuff
char ch[40]; // memset the arrays, get the string
memset(ch, '\0', 40);
gets(ch);

int diff = 40 - strlen(ch);
int spaces = 0;
while(i<strlen(ch))
{
if(*(ch + i++) == ' ') // count the number of words/spaces between words
spaces++;
}
char finalt[40];
memset(finalt, '\0', 40);

i = 0;

diff /= spaces; // diff is the number of spaces to be added between every word

i = 0;
int j = 0; // j is for the finalt array
int k = 0; // k counts through the while, to put in spaces
printf("%d\n", diff);
while(i<40) // just squeeze in the spaces
{
if(ch[i] == ' ') {while(k<diff){ finalt[j++] = ' '; k++;} k = 0;}
else {finalt[j] = ch[i]; j++;}
i++;
}

printf("%s\n", finalt); // print the result
return 0;
}

关于c - 给字符串添加空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16316144/

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