Tengo este código de ejemplo pero no termino de comprender su lógica, a ver si me pueden ayudar un poco.
Código:
#include <stdio.h> #define MAXLINE 1000 /* tamaño máximo de la linea de entrada */ int getline(char line[], int maxline); void copy(char to[], char from[]); /* imprime la línea de entrada más larga */ int main(int argc, char *argv[]) { int len; /* longitud actual de la línea */ int max; /* máxima longitud vista hasta el momento */ char line[MAXLINE]; /* línea de entrada actual */ char longest[MAXLINE]; /* la línea más larga se guarda aquí */ max = 0; while ((len = getline(line, MAXLINE)) > 0) if (len > max) { max = len; copy(longest, line); } if (max > 0) /* no hubo línea */ printf("%s", longest); return 0; } /* getline: lee una línea en s, regresa su longitud */ int getline(char s[], int lim) { int c, i; for (i=0; i<lim-1 && (c=getchar()) != EOF && c != '\n'; ++i) s[i]=c; if (c == '\n'){ s[i] = c; ++i; } s[i] = '\0'; return i; } /* copy: copiar 'from' en 'to'; supone que to es suficientemente grande */ void copy(char to[], char from[]) { int i; i = 0; while ((to[i] = from[i]) != '\0') ++i; }
en la función getline, la variable c está para guardar el contenido de getline en ella. Pero no entiendo por qué pregunta con el if si c == '\n' para dsp guardar un '\n' en s
Código:
Otra pregunta, el parámetro que recibe getline (int lim) no está definido en ningún lado. if (c == '\n'){ s[i] = c;
Mismo los dos arreglos de la función void.
Esas son mis dudas , muchas gracias.