/* compito di esame gennaio 2002 */

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

struct NodoLista {
  char val;
  struct NodoLista *next;
};

typedef struct NodoLista *TipoLista;


/*
  legge una lista da file
*/

TipoLista LeggiFile(char *nomefile) {
  FILE *fd;
  TipoLista l, s;
  char c;
  int res;

  fd=fopen(nomefile, "r");
  if(fd==NULL) {
    perror("Errore in apertura del file");
    exit(1);
  }

  l=malloc(sizeof(struct NodoLista));
  s=l;

  while(1) {
    res=fscanf(fd, "%c", &c);

    if(res!=1)
      break;

    if(c!='\n') {
      s->next=malloc(sizeof(struct NodoLista));
      s=s->next;
      s->val=c;
    }
  }

  s->next=NULL;

  s=l;
  l=l->next;
  free(s);

  return l;
}


/*
  stampa una lista
*/

void StampaLista(TipoLista l) {
  while(l!=NULL) {
    if(l->val!=' ')
      printf("%c", l->val);
    else
      printf("_");
    l=l->next;
  }
}


/* inserire qui la soluzione */


/*
  main
*/

int main(int argn, char *argv[]) {
  TipoLista l, r;

			/* controllo argomenti */
  if(argn-1!=1) {
    printf("Dare il nome del file che contiene la lista\n");
    exit(1);
  }

			/* legge la lista */
  l=LeggiFile(argv[1]);

			/* stampa la lista */
  printf("lista letta in ingresso: ");
  StampaLista(l);
  printf("\n");

			/* elimina ultimo elemento */
  r=CreaListaAcronimo(l);

			/* stampa di nuovo dopo la eliminazione */
  printf("lista modificata: ");
  StampaLista(r);
  printf("\n");

  return 0;
}
