Ho modificato qualcosa nel main, ho messo le graffe altrimenti considera solo la prima istruzione, ed ho messo la condizione che qualunque valore abbia len (lunghezza della riga) deve essere visualizzata ma mi mette numeri a caso, penso forse a causa di lim.
#include <stdio.h>
#define MAXLINE 10
/*getline legge la riga succesiva del testo in ingresso;
deve segnalare l' eventuale fine del file (EOF)
deve restituire la lunghezza della riga letta o 0 se non vi sono altri dati in ingresso*/
int getline(char line[], int maxline);
void copy(char to[], char from[]);
int main()
{
int len; // lunghezza della riga corrente1
int max; // lunghezza massima riscontrata finora2
char line[MAXLINE]; // riga corrente1
char longest[MAXLINE]; // contiene la riga più lunga trovata2
max = 0;
while ((len = getline(line, MAXLINE)) > 0) {
if(len <= MAXLINE || len >= MAXLINE) printf("%d", len);
if (len > max) {
max = len; // lunghezza massima riscontrata finora = lunghezza della riga corrente
copy(longest, line);
}
}
if (max > 0) // c' era almeno una riga in ingresso
printf("%s", longest);
return 0;
}
// getline: legge una riga in ingresso, la assegna a s, ne restituisce la lunghezza
int getline(char s[], int lim)
{
int c, i;
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) {
s[i] = c;
}//le graffe del for sono solo indicative e si possono togliere
if (c == '\n')
{
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
// copy: copia la stringa 'from' sulla stringa 'to'; assume che 'to' sia sufficientemente lunga
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}