( bucko | 2020. 02. 08., szo – 23:28 )

Első idézet magyarázata: Valószínűleg nem sokat kellene tanulnod az awk használatához. Van egy-két specifikum, de azt felszedi az ember menet közben.

Második idézet magyarázata: Csak úgy l'art pour l'art írogattam az awk szépségéről és hasznosságáról. Semmi bajom a C-vel.

Harmadik idézet magyarázata: Az indoklás elfogadható szintű. ;)

A soronkénti beolvasás tényleg lassabb. Ha tudjuk, hogy ASCII-artról van szó, akkor kell mondani egy gets()-t és máris ott csücsül a default 5k bufferben a szöveg. Ezt az oprendszer és a shell biztosítja. Az awk esetén is.

A "célfeladatra céleszköz", ok nézd meg a kódomat. Gyorstalpaló és egyszerűsített awk tanfolyam:

- Egy program 3 opcionális részből állhat: BEGIN{} {(body)} END{}

- A body minden beolvasott sorra végrehajtódik, amíg a sorok el nem fogynak.

- A length() függvény paraméter nelkül az $0 változó hosszát adja vissza, ami nem más, mint a beolvasott sor. Ezért is nem féltem 2x meghívni, mert ez a hossz már a beolvasáskor előáll.

- A numerikus változók 0 értékre inicializáltak. (Ide ennyi elég.)

Itt a vége. Ha eddig nem tudtad volna elolvasni a kódomat (amit azért nem hiszek), akkor máris menni fog.

Nem feledvén, hogy a programod jóval többet elvégez...

#include <stdio.h>
#include <string.h>

main()
{
    int L=0,L1=0;
    char Buffer[0x100];
    while ( gets(Buffer) )
    {
        L1=strlen(Buffer);
        if ( L1 > L )
            L=L1;
    }
}

Ez kb. az awk programnak megfelelő valami. Ebből vagy az awk-ból előállitva a programodat sokkal szebb lesz, és kb. ugyanannyi sorral kell kiegészíteni.. ;)

Az látszik, hogy a feladatot megoldva mindkét nyelven rövid a fejlesztési idő és hasonló az eredmény.

Bár nem ismerem a PowerMac-et, de mondjuk győztél. ;(