måndag 14 september 2009

C-program i Nano/terminalen

Satt och kollade igenom lite Harvard Computer Science från deras online lectures.
Rätt bra grejer, speciellt eftersom det fyller upp en del luckor jag känner att jag har, i grunderna och även sånt jag kunde för 10 år sen men nu förträngt eller glömt :)
så det var kul att se att han plötsligt börjar programmera i nano, och kompilera och exekvera i terminalen.
Vad jag minns har jag faktiskt aldrig gjort det på det sättet (antar att jag jobbade i MS-DOS...) men lite kom jag iaf ihåg, include stdio.h osv osv...

Så när man skriver ett C-program i nano så bör man antagligen (nu är jag ju färsk så ursäkta ev missar...) börja med att döpa filen lämpligen genom "nano filnamn.c" så att man inte klantar sig och glömmer .c efteråt. Kanske lite enklare att hålla reda på filerna sedan, speciellt om man kompilerar dem osv.

När man sedan skrivit sin kod, typ:

/* ett program i C, skrivet 2009 whatever */
#include < stdio.h >

int
main(int argc, char * argv[])
{
printf("hello, world\n");
}
[HÄR SLUTAR NANO]

Ok det där var alltså ett C-program i form av "hello world".
Observera backslash-n som byter till ny rad, så slipper man markören direkt efter.

Det man gör nu (om man har gcc eller cc som jag har på mac) är att man kompilerar filen.
Filen bör nu heta hello.c (kolla med ls) och sedan skriver man
cc hello.c
och då bör det dyka upp en kompilerad fil (om du inte klantat dig i koden och får fel) som heter
a.out
Testa med ls -l att den finns, och observera att den är +x för alla. (körbar).

Förslagsvis döper man nu om denna till "helloworld.pgm" eller lämpligt annat namn som inte är a.out.

Sedan är det bara att testa köra igång den genom att skriva
./helloworld.pgm
då ska man se en rad
hello world
och sedan kommer kommandoraden tillbaka på nästa rad (pga backslash-n).
Händer nåt annat eller ingenting så är det nåt som är fel i koden, kompileringen eller ditt kommando. Alternativt att du inte har rätt att exekvera filen.

Spännande, eller hur? Nu kan jag programmera i C igen :)

Inga kommentarer:

Skicka en kommentar