codice:
  char in[15], *nomefilein=in;
Forse hai inserito un nome di file più lungo di 15 caratteri; in generale comunque le variabili contenenti percorsi di file dovrebbero essere di 260 caratteri (o MAX_PATH se lavori con le API di Windows).
Tra l'altro, perché dichiari quel puntatore che poi non usi più?
codice:
  int long timestamp;
long int (o, più semplicemente, long), semmai.
codice:
  gets(in);
Sostituisci la gets (che può essere causa di buffer overflow) con la sua parente "sicura" fgets, fornendole le dimensioni del buffer (sizeof(in)).
codice:
                     exit(1);
Meglio return 1;
codice:
  while(!feof(fpa))
La condizione non è sufficiente, devi anche controllare ferror: se si verificasse un errore il loop continuerebbe all'infinito.
codice:
     if(fscanf(fpa, "%d",&timestamp) != EOF)
     if(fscanf(fpa, "%s", &AP) != EOF)
Il codice di formato per i long non è %d, ma %ld.
Se la fscanf ha problemi a leggere il file non restituisce EOF, ma 0 (in generale, le funzioni della famiglia scanf restituiscono il numero di campi che sono riuscite a leggere e convertire). Inoltre se si verifica un problema devi uscire dal while, non semplicemente evitare di eseguire il blocco centrale del codice.
codice:
        fpouta=fopen("A.txt", "a+");           
        fprintf(fpouta, "%d  %s \n", timestamp, AP);
        fclose(fpouta);
Perché continui ad aprire e richiudere il file nel while? Aprilo all'inizio e chiudilo alla fine, come hai fatto per il file di input.
codice:
}
Manca il return 0.