You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1008 B
61 lines
1008 B
/*
|
|
* line.c
|
|
*
|
|
* Created on: Jun 13, 2013
|
|
* Author: delmadord
|
|
*/
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "line.h"
|
|
|
|
#define MAX_LINE_LEN 60
|
|
|
|
char line[MAX_LINE_LEN + 1];
|
|
int line_len = 0;
|
|
int num_words = 0;
|
|
|
|
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_remainig(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);
|
|
}
|
|
|