Hola! en el fopen debes pasar dat1 y no dat1[N]. El bucle while me parece que esta demas; si usas i<N siempre va a iterar N veces(lo cual esta mal)... Lo que podes hacer es usar el retorno de fscanf: http://c.conclase.net/librerias/?ansifun=fscanf De esa manera podes utilizar como corte de los for el retorno de fscanf
Hola! cuando compilaste el codigo debio haberte tirado un warning(sino lo hizo cambia de compilador). EL problema esta en hacer &hello y &world, esos "&" estan demas(mas adelante vas a entender que significaria)
Hola! el problema esta en la funcion insertar(), el do-while esta demas(no es necesario), ademas con esa condicion estas creando un bucle infinito cuando el numero es par... Si queres crear una lista con numeros pares la condicion principal debe ser:
Código
if(i%2==0){
...... /* crear lista */
}
Otra cosa:
Código
if(lista!=NULL)
esta condicion no es necesario, ya que una vez ingresado al else la lista siempre va a ser distinto de NULL