INF1070 Oppgaver uke 5 (30.1-3.2.2006) (Oppgave 1-3 er de viktigste.) 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 Skriv C-funksjonen int isspacex (unsigned char c) som oppfører seg som standardfunksjonen `isspace', dvs returnerer «sann» (dvs en verdi som ikke er 0) om c er et mellomromstegn, dvs ' ' (blank, ASCII 32), LF (linjeskilletegn, ASCII 10) eller TAB (tabulatortegn, ASCII 9); hvis ikke skal den returnere 0. Skriv også et testprogram. 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 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. Oppgave 6 (Ukens nøtt) Standardprogrammet `tail' skriver ut de siste linjene av en fil; vanligvis de 10 siste linjene, men det kan gis en opsjon som angir hvor mange linjer som kan skrives ut. For eksempel vil tail -20 fil skrive ut de 20 siste linjene av filen `fil´. Skriv programmet `tail´. Bruk en liste til å lagre de aktuelle linjene.