Witam, mam problem z następującym funkcją pobierającą wpisywany wiersz:
/* getline: read a line into s, return length */
int getline(char s[], int lim)
{
int c, i;
for (i=0; i<lim-1 && (c=getchar())!= EOF && c!='\n'; ++i) /*TEN FRAGMENT*/
s[i] = c;
if (c == '\n') { /*TEN FRAGMENT*/
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
Zaznaczyłem dyskusyjny fragment, przykład pochodzi z książki ANSI C K&R.
Wydaje mi się nielogiczne, żeby najpierw w pętli for testować czy c != '\n' po czym robić osobny warunek na przypadek c =='\n' i dokonywać tej samej operacji co ta wyżej w pętli for.
Czy mam rację?
Jeśli nie, to czemu ten przypadek jest w taki sposób oddzielony?
Z góry dziękuję za pomoc