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.
Sostituisci la gets (che può essere causa di buffer overflow) con la sua parente "sicura" fgets, fornendole le dimensioni del buffer (sizeof(in)).
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",×tamp) != 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.
Manca il return 0.