Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- unsigned getNumber(void);
- char * getLine(void);
- int main (void) {
- unsigned lineCount;
- do {
- printf("Enter number of lines (please enter a positive integer): ");
- lineCount = getNumber();
- } while (!lineCount);
- char ** lines = malloc(lineCount * sizeof(char *));
- unsigned line;
- for (line = 0; line < lineCount; line ++)
- lines[line] = getLine();
- putchar('\n'); // leaving a blank line
- unsigned remaining = lineCount;
- unsigned column;
- for (column = 0; remaining; column ++) {
- for (line = 0; line < lineCount; line ++) {
- if (!lines[line]) {
- putchar(' '); // leave a space for padding
- continue;
- }
- if (lines[line][column])
- putchar(lines[line][column]);
- else {
- free(lines[line]);
- lines[line] = NULL;
- remaining --;
- putchar(' '); // leave a space for padding
- }
- }
- putchar('\n');
- }
- return 0;
- }
- unsigned getNumber (void) {
- char * line = getLine();
- char * current;
- unsigned value = 0;
- for (current = line; *current; current ++) {
- if ((*current < '0') || (*current > '9')) {
- value = 0;
- break;
- }
- if ((10 * value + (*current - '0')) < value) {
- printf("That number was too large, enter a smaller one please\n");
- free(line);
- return 0;
- }
- value *= 10;
- value += *current - '0';
- }
- free(line);
- if (!value) printf("Does 'positive integer' mean something different for you?\n");
- return value;
- }
- char * getLine (void) {
- char * result = NULL;
- unsigned resultLength = 0;
- char current;
- while (1) {
- current = getchar();
- if ((current == '\n') || (current == EOF)) break;
- result = realloc(result, ++ resultLength);
- result[resultLength - 1] = current;
- }
- result = realloc(result, resultLength + 1);
- result[resultLength] = 0;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement