INF1070 Oppgaver uke 4 (24.-28.1.2005) 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 Skriv om C-programmet `tail' (som ble vist p? forelesningen 19.9) slik at det kan gis en opsjon som angir hvor mange linjer som kan skrives ut, og et filnavn. For eksempel vil tail -20 fil skrive ut de 20 siste linjene av filen `fil'. Hvis brukeren ikke oppgir noen slik opsjon, skriver programmet de 10 siste linjene. Bruk en liste til ? lagre de aktuelle linjene.