/*
 * Soubor:  20101129-Mon-nejdelsi-radek.c
 * Datum:   29.11.2010 10:06
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha:   Program vypíše na výstup nejdelší řádek, který mu byl 
 *          předán na vstupu
 */

#include <stdio.h>

/////////////////////////////////////////////////////
#define MAXDELKA 1024

/* 
 * Funkce načte řádek do pole s[] a vrátí délku načteného řádku
 */
int nacti_radek(char s[], int maxdelka)
{
    int pocet,znak;
    for (pocet=0;pocet<maxdelka-1 && (znak=getchar()) != EOF && znak != '\n';pocet++) {
        s[pocet]=znak;
    }
    if (znak == '\n') {
        s[pocet]=znak;
        pocet++;
    }
    s[pocet]='\0';

    return pocet;
}

/* Funkce kopíruje řetězec z[] do řetězce do[] */
void kopiruj(char z[], char kam[])
{
    int i=0;
    while ( (kam[i] = z[i]) != '\0' ) {
        i++;
    }
}

/**
 * Hlavní program.
 */
int main(void) {
    char radek[MAXDELKA];
    char mradek[MAXDELKA];
    int delka;
    int mdelka=0;

    while ( (delka = nacti_radek(radek,MAXDELKA)) != 0 ) {
        if ( delka > mdelka ) {
            mdelka = delka;
            kopiruj(radek,mradek);
        }
    }   
    printf("%d\n",mdelka);
    printf("%s",mradek);
    return 0;
}

