Ragazzi ho riscritto il codice in questo modo
codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>




main(){
    //inizio dichiarazioni
    FILE* pi;
    FILE* pu;
    int i,n,limite;
    char s[128];
    char s2[128];
    int n2=0;
    int lunsprec=128;
    int a,b;




    //fine dichiarazioni
    pi=fopen("ingresso.txt","r");
    if(pi==NULL){perror("Il file non esiste!"); exit(1);}
    for(i=0;i<=128;i++){
        limite=fscanf(pi,"%s%d",&s,&n);
        if(limite==EOF) break;
        printf("Coppia letta: %s %d\n",s,n);
        a=strlen(s);
        b=lunsprec;
        if(a<b && n>40){
            strcpy(s2,s);
            n2=n;
        }
        else continue;
        lunsprec=strlen(s);
        
    }




    fclose(pi);
    printf("La coppia che sara' scritta su file e': %s %d\n",s2,n2);
        pu=fopen("uscita.txt","w");
        fprintf(pu,"%s %d",s2,n2);
        if(pu==NULL){
            perror("Errore!");
            exit(1);
        }
        else printf("Il file uscita e' stato creato correttamente.\n\nFine Programma.\n");
        fclose(pu);
}
e adesso il programma funziona. Grazie lo stesso a tutti.