#include <stdio.h>
#define MAXLINE 1000
int getline(char line[], int maxline);
void copy(char to[], char from[]);
main()
{
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max=0;
while((len=getline(line, MAXLINE))>0)
if(len>max){
max=len;
copy(longest, line);}
if(max>0)
printf("\n%s", longest);
return 0;
}
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'){ /*Tu nie rozumiem dlaczego c nie zajeło miejsca innej litery przy przykładowym ciągu zxcvbnm s[6]=m a c=' ' warunek nie spełniony więc przechodzimy do if to dlaczego c[6]=/=' ' */
s[i]=c; /* CZy tu następuje nadpisanie już zapisanego pola tabeli?
++i;
}
s[i]='\0';
return i;
}
void copy(char to[], char from[])
{
int i;
i=0;
while((to[i]=from[i])!='\0')
++i;
}
0
2
- Zapoznaj się z pojęciem formatowania kodu
- Nigdy nie słyszałem aby ktoś nauczył się karate oglądając filmy z Bruce Lee, więc pisz kody sam zamiast analizować cudze.
- Albo
c
jest ostatnim wczytanym znakiem albo nie jest to '\n' (w przypadku '\n' pętla skończyłaby się na poprzednim kroku) - W pętli po
s[i]=c;
zawsze następuje++i
zaś dopiero później sprawdzenie warunku.