Я пытаюсь использовать этот старый пример из «Язык программирования C». Я получаю ошибку конфликтующих типов с помощью функции getline
. Я также попытался разместить функцию перед main. Я использую gcc 4.6.3 в качестве моего компилятора.Старый код C не компилируется
#include <stdio.h>
#define MAXLINE 1000
int getline(char line[], int maxline);
void copy(char to[], char from[]);
int main(void)
{
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("%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'){
s[i]=c;
++i;
}
s[i]='\0';
return i;
}
void copy(char to[], char from[])
{
int i;
i=0;
while((to[i]=from[i])!= '\0')
++i;
}
Можете ли вы дать нам всю ошибку компилятора с номером строки? – Magn3s1um
Кроме того, yo ucan't передать ваш массив, чтобы получить такую же ссылку. Вам нужно передать адрес массива с помощью & line, а затем аргумент будет иметь тип char *. – Magn3s1um
@ Magn3s1um: Это чепуха. Массив 'char' можно передать в fucntion с помощью' char * '. 'char []', поскольку тип аргумента является синонимом 'char *'. –