Ora dopo tanto ero arrivato alla conclusione, però ci sono riuscito senza usare funzioni, devo ammettere che la tua versione del codice è molto meno "incasinata", però sono agli inizi, alcuni comandi che hai usato (ad esempio stdlib.h) devo ancora studiarli...
posto comunque la versione corretta senza la funzione getline, dal prossimo programma è meglio se comincio ad usare le funzioni come hai suggerito, grazie
#include <stdio.h>
#define MAXLINE 1000
#define TARGET 80
#define MAXRES 1000
main()
{
int i,c,f,len, totcar;
totcar=0;
len=0;
f=0;
char s[MAXLINE];
char tar[MAXLINE];
char riga[MAXRES];
while ((c=getchar())!=EOF)
{
i=0;
s[i]=c;
for(i=1;(c=getchar())!=EOF && c!='\n' && i<MAXLINE;++i)
{
s[i]=c;
}
if(c=='\n')
{
s[i]=c;
len=i;
i++;
}
s[i]='\0';
if(len>=TARGET)
{
i=0;
while((tar[i]=s[i])!='\0')
{
i++;
}
totcar=totcar+i;
i=0;
for(;f<totcar;f++)
{
riga[f]=tar[i];
i++;
}
if(c!='\n')
{
riga[f]='\n';
f++;
}
}
riga[f]='\0';
}
printf("%s", riga);
return 0;
}