#include <string.h>
#include <stdio.h>
#ifndef LINE_H
#define LINE_H
void clear_line(void);
void add_word(const char *word);
int space_remaining(void);
void write_line(void);
void flush_line(void);
#endif
#ifndef WORD_H
#define WORD_H
void read_word(char *word,int len);
#endif
#define MAX_WORD_LEN 20
#define MAX_LINE_LEN 60
char line[MAX_LINE_LEN+1];
int line_len = 0;
int num_words = 0;
main()
{
char word[MAX_WORD_LEN+2];
int word_len;
clear_line();
for (;;){
read_word(word,MAX_WORD_LEN+1);
word_len = strlen(word);
if (word_len == 0){
flush_line();
return 0;
}
if (word_len > MAX_WORD_LEN)
word[MAX_WORD_LEN] = '*';
if (word_len + 1 > space_remaining()) {
write_line();
clear_line();
}
add_word(word);
}
}
///////////line.c////////////////////////////////////////////////////////////////i
void clear_line(void){
line[0] = '\0';
line_len = 0;
num_words = 0;
}
void add_word(const char *word)
{
if (num_words > 0) {
line[line_len] = ' ';
line[line_len+1] = '\0';
line_len++;
}
strcat(line,word);
line_len += strlen(word);
num_words++;
}
int space_remaining(void){
return MAX_LINE_LEN - line_len;
}
void write_line(void)
{
int extra_spaces,spaces_to_insert,i,j;
extra_spaces = MAX_LINE_LEN-line_len;
for(i=0;i<line_len;i++){
if(line[i] != ' ')
putchar(line[i]);
else {
spaces_to_insert = extra_spaces / (num_words - 1);
for (j = 1; j<=spaces_to_insert +1; j++)
putchar(' ');
extra_spaces -= spaces_to_insert;
num_words--;
}
}
putchar ('\n');
}
void flush_line(void)
{
if (line_len>0)
puts(line);
}
/////word.c/////////////////////////////////////////////////////////////
int read_char(void)
{
int ch = getchar ();
if (ch == '\n' || ch == '\t')
return ' ';
return ch;
}
void read_word(char *word, int len)
{
int ch,pos = 0;
while ((ch = read_char()) == ' ')
;
while (ch != ' ' && ch != EOF) {
if (pos<len)
word[pos++] = ch;
ch = read_char();
}
word[pos] = '\0';
}