IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Llista

atof, atoi, atol: interpret strings as integers
strtod, strtof, strtold: interpret strings as real numbers
strtol, strtoul: interpret strings as integers (more robust than atoi or atol)
rand, srand: generate pseudo-random numbers
abort: immediately terminate the program
atexit: define code to execute before a program terminates
exit: terminate the program with proper cleanup and a return value
getenv: return values from the external environment (like PATH)
system: run external programs
bsearch, qsort: efficient sorting and searching of arrays
abs, labs: integer absolute values
div: integer division and remainder in a single operation

Ordenació de vectors

qsort

#include <stdlib.h>

void qsort(void *base, size_t nmemb, size_t size,
                 int(*compar)(const void *, const void *));


#include <stdio.h>
      #include <stdlib.h>
      #include <unistd.h>
      #include <string.h>
      #include <assert.h>

      static int
      cmpstringp(const void *p1, const void *p2)
      {
          /* The actual arguments to this function are "pointers to
             pointers to char", but strcmp(3) arguments are "pointers
             to char", hence the following cast plus dereference */

          return strcmp(* (char * const *) p1, * (char * const *) p2);
      }

      int
      main(int argc, char *argv[])
      {
          int j;

          assert(argc > 1);

          qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);

          for (j = 1; j < argc; j++)
              puts(argv[j]);
          exit(EXIT_SUCCESS);
      }

bsearch

Cerca en arrays:

 #include <stdlib.h>

 void *bsearch(const void *key, const void *base, size_t nmemb,
            size_t size, int (*compar)(const void *, const void *));

 #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>

      struct mi {
          int nr;
          char *name;
      } months[] = {
          { 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" },
          { 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" },
          { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" }
      };

      #define nr_of_months (sizeof(months)/sizeof(months[0]))

      static int
      compmi(const void *m1, const void *m2)
      {
          struct mi *mi1 = (struct mi *) m1;
          struct mi *mi2 = (struct mi *) m2;
          return strcmp(mi1->name, mi2->name);
      }

      int
      main(int argc, char **argv)
      {
          int i;

          qsort(months, nr_of_months, sizeof(struct mi), compmi);
          for (i = 1; i < argc; i++) {
              struct mi key, *res;
              key.name = argv[i];
              res = bsearch(&key, months, nr_of_months,
                            sizeof(struct mi), compmi);
              if (res == NULL)
                  printf("’%s’: unknown month\n", argv[i]);
              else
                  printf("%s: month #%d\n", res->name, res->nr);
          }
          exit(EXIT_SUCCESS);
      }

alphasort

versionsort