Ciao a tutti!
Devo scrivere un programma in linguaggio ANSI C che prenda in input il nome di un file contenente delle mosse di scacchi (per esempio BIANCO E5 E6) e che sposti queste mosse in una coda implementata come lista. Dopodichè devo contare il numero di mosse (cioè misurare la lunghezza della lista) e scrivere su un file output indicato dall'utente il numero di mosse fatte e i pezzi mangiati per il nero e per il bianco.
Il mio problema sono le funzioni append (inserimento in coda) e pop, oltre a quella della lunghezza della lista.

L'errore che mi dà è sempre lo stesso: "request for member ‘next’ in something not a structure or union"
perciò posto solo una delle funzioni così da alleggerire la visione spero mi possiate dare una mano, io non ne vengo fuori!
codice:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h> 

/*apro il file input*/
char buf[10000];
FILE*f;
int len;
char finput;
char foutput;

int input()
{ 
  FILE *f;
  printf("inserisci il nome del file input\n");
  scanf("%c", &finput);
  f=fopen("%c", "r");
  /*  se volessi stamparlo a video dovrei aggiungere:
      while (fscanf(f,"%s",buf)>0)   
      printf("%s", buf);*/
  fclose(f);
  return 0;
}
/*leggo input e implemento la coda come una lista*/
/* Implemento il tipo liststring*/
struct liststring {
  char *str;
  struct liststring* next;
};

typedef struct liststring** Liststring;

/* Inserimento in coda*/ 
int append(Liststring *l, char *elem)
{
  if(*l==NULL){
    (*l) = (Liststring) malloc(sizeof(struct liststring)); 
	if(*l){
		(*l)-> next = NULL;
		(*l)-> str = elem; 
		return 1;
	}
	else 
		return 0;
    } 
  else 
   return append(((*l)-> next), elem);
}
spero di aver scritto nell'area giusta, scusatemi in caso!