0
#include <stdio.h>
#define MAXLINE 1000
int max;
char line[MAXLINE];
char longest[MAXLINE];
int getline(void);
void copy(void);
int main(){
int len;
extern int max;
extern char longest[];
max = 0;
while((len = getline()) > 0){
if(len > max){
max = len;
copy();
}
}
if(max > 0)
printf("%s", longest);
return 0;
}
int getline(void){
int c, i;
extern char line[];
for(i = 0; i < MAXLINE - 1 && (c = getchar()) != EOF && c!= '\n'; i++)
line[i] = c;
if(c == '\n'){
line[i] = c;
i++;
}
line[i] = '\0';
return i;
}
void copy(void){
int i;
extern char line[], longest[];
i = 0;
while((longest[i] = line[i]) != '\0')
i++;
}
出現的錯誤是:獲得太少參數函數調用,而衝突的C型
longlineextern.c:9:5: error: conflicting types for 'getline'
int getline(void);
^
/usr/include/stdio.h:448:9: note: previous declaration is here
ssize_t getline(char ** __restrict __linep, size_t * __restrict __lineca...
^
longlineextern.c:18:24: error: too few arguments to function call, expected 3,
have 0
while((len = getline()) > 0){
~~~~~~~^
/usr/include/stdio.h:448:1: note: 'getline' declared here
ssize_t getline(char ** __restrict __linep, size_t * __restrict __lineca...
^
longlineextern.c:29:5: error: conflicting types for 'getline'
int getline(void){
^
/usr/include/stdio.h:448:9: note: previous declaration is here
ssize_t getline(char ** __restrict __linep, size_t * __restrict __lineca...
^
3 errors generated.
這也發生在其他程序,我不明白爲什麼,因爲我傳遞正確的參數的數量和他們是正確的類型。
該程序完全從C編程語言手冊中複製,所以它應該是正確的。
它在Mac的終端
使用gcc編譯任何幫助是極大的讚賞 感謝
由於'getline'已經存在於您正在使用的庫中,所以名稱衝突正在發生。使用不同的名稱,如'my_getline'等。 – BLUEPIXY
MSVC的'stdio.h'中沒有'getline',它編譯乾淨。 –