User talk:MicheleN

From Sistemi Operativi
Jump to navigation Jump to search

Caro MicheleN,

perchè vuoi porre cmpvalue=1?

è inutile.

struct word *addword(char *word, struct word *wlist) {
  struct word **scan;
  int cmpvalue /* = 1 useless */;
  for (scan = &wlist;
      *scan != NULL && ((cmpvalue = lenalphacmp(word, (*scan)->word)) > 0);
      scan = &((*scan)->next))
    ;
  if (scan != NULL && cmpvalue == 0)
    (*scan)->count ++;
  else {
    struct word *new = malloc(sizeof(struct word) + strlen(word) + 1);
    if (new) {
      new->next = *scan;
      new->count = 1;
      strcpy(new->word, word);
      *scan = new;
    }
  }
  return wlist;
}

Se scan è NULL esce subito dal ciclo e cmpvalue ha un valore indefinito, ma cmpvalue non viene valutato nell'if che segue (per cortocircuitazione dell'&&). Se scan non è NULL, cmpvalue viene assegnato. no?

Renzo (talk) 10:31, 17 October 2016 (CEST)