--*- coding: utf-8; -*-- INF2270 Oppgaver uke 5 (27-31.2.2014) (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.