--*- coding: utf-8; -*-- INF2270 Oppgaver uke 5 (28.1-1.2.2013) (Oppgave 1 og 4 er de viktigste, deretter nr 2.) Oppgave 1 Skriv C-funksjonen int is_opt (unsigned char s[]) som returnerer 1 om s er en Unix-opsjon, dvs starter med '-'; ellers returneres 0. Oppgave 2 Gitt f?lgende program der funksjonen 'strcatc' utvider teksten s med tegnet c: #include #include void strcatc (char s[], char c) { ... } char teststr[20]; void test (char c) { printf("F?r: \"%s\".", teststr); strcatc(teststr, c); printf("\tEtter innsetting av '%c': \"%s\".\n", c, teststr); } int main (void) { strcpy(teststr, ""); /* Initiering er n?dvendig! */ test('a'); test('b'); test('c'); test('.'); test('.'); test('?'); return 0; } Programmet sjekker om funksjonen virker ved ? teste den p? ulike data. N?r programmet kj?res, skal det skrive: F?r: "". Etter innsetting av 'a': "a". F?r: "a". Etter innsetting av 'b': "ab". F?r: "ab". Etter innsetting av 'c': "abc". F?r: "abc". Etter innsetting av '.': "abc.". F?r: "abc.". Etter innsetting av '.': "abc..". F?r: "abc..". Etter innsetting av '?': "abc..?". Skriv funksjonen `strcatc'. Oppgave 3 Unix-programmer f?r overf?rt parametre p? f?lgende m?te: Hovedprogrammet 'main' kan ha to parametre: int main (int argc, char *argv[]) Parameteren argc er antall parametre mens argv er en vektor med peker til programparametrene (som alle er tekster). F?rste programparameter (alts? argv[0]) er alltid navnet p? programmet selv slik det ble kalt. Unix-programmet 'echo' skriver ut sine parametre: > echo A b 127 A b 127 Skriv dette programmet i C. Oppgave 4 Standardfunksjonen i C int atoi (char s[]) beregner heltallet lagret i teksten s, for eksempel atoi(" -27") returnerer -27 atoi("6804 ") returnerer 6804 Det kan v?re blanke f?r og etter tallet. Skriv funksjonen. Hint. En slik omforming gj?res ved ? ta for seg siffer for siffer. For hvert siffer m? man gange resultatet man har samlet hittil med 10 og s? legge til sifferets verdi, for eksempel Siffer Verdi Resultat 0 '6' 6 10*0+6=6 '8' 8 10*6+8=68 '0' 0 10*68+0=680 '4' 4 10*680+4=6804 Oppgave 5 (Ukens n?tt) Standardprogrammet 'printenv' i Unix skriver ut omgivelsesvariable p? f?lgende m?te: 1. Hvis brukeren ikke oppgir noen parameter, skrives alle omgivelsesvariablene ut. 2. Om brukeren oppgir navnet p? en omgivelsesvariabel som programparameter (i 'argv'-parameteren til 'main'), skrives kun dennes verdi ut (uten navnet og likhetstegnet): > printenv PRINTER prent 3. Om brukeren oppgir et navn som ikke er kjent, skrives det ingenting ut. Hint: Funksjonen 'getenv' kan v?re nyttig; se hva ?man getenv? sier om den.