--*- coding: utf-8; -*-- INF2270 Løsningsforslag til ukeoppgaver uke 5 2012 Oppgave 1 int is_opt (unsigned char s[]) { return s[0]=='-'; } (NB! Den fungerer også om s er en tom tekst (dvs teksten ""). Hvorfor?) Oppgave 2 void strcatc (char s[], char c) { int lx = strlen(s); s[lx] = c; s[lx+1] = 0; } Oppgave 3 #include int main (int argc, char *argv[]) { int i; for (i = 1; i < argc; ++i) { if (i > 1) printf(" "); printf("%s", argv[i]); } printf("\n"); return 0; } Oppgave 4 #include /* pga 'isdigit'; se nedenfor */ int atoi (char s[]) { int fortegn = 1, ix = 0, res = 0; /* Hopp over innledende tegn som ikke hører til tallet: */ while (s[ix]!= 0 && s[ix]!='-' && !isdigit(s[ix])) ++ix; /* Ta vare på fortegnet (om tallet har fortegn): */ if (s[ix] == '-') { fortegn = -1; ++ix; } /* Les sifrene og beregn tallet: */ while (isdigit(s[ix])) { res = 10*res + s[ix]-'0'; ++ix; } /* Returner: */ return fortegn*res; } Oppgave 5 #include #include extern char **environ; int main (int argc, char *argv[]) { if (argc == 1) { /* Skriv all omgivelsesvariablene: */ char **p = environ; while (*p) { printf("%s\n", *p); ++p; } } else if (argc == 2) { /* Skriv bare én omgivelsesvariabel: */ char *vd = getenv(argv[1]); if (vd != NULL) printf("%s\n", vd); } else { printf("Usage: printenv [name]\n"); } return argc>2; }