为字符串添加空格

我试图在每个空格中添加一个空格,直到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  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  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 #include #include 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 
 #include  #include  #include  #define WIDTH 70 #define _(x) #x #define str(x) _(x) void ruler_print(int n){ char ruler[] = "1234567890"; while(n>9){ printf(ruler); n -= 10; } ruler[n] = '\0'; printf("%s\n", ruler); } int count_word(const char *text, size_t *count_char){ int i; char *wk, *p; p=wk=strdup(text); *count_char=0; for(i=0;p=strtok(p, " ");++i,p=NULL){ *count_char+=strlen(p); } free(wk); return i; } int main(void){ int column, len, word_count; int i, spaces, between, remain; size_t count_char; char text[WIDTH + 1]; char *p = text; printf("Enter the width of the column: ");scanf("%d%*c", &column); printf("Enter a line of text: ");scanf("%" str(WIDTH) "[^\n]", text); len=strlen(text); if(len > column || len > WIDTH){ fprintf(stderr, "too long text!\n"); return -1; } ruler_print(WIDTH); word_count = count_word(text, &count_char); spaces = column - count_char; between = spaces / (word_count -1); remain = spaces - (word_count -1)*between; strtok(text, " "); for(i=0;i