这是我正在尝试直接从“ C编程语言”的1.9节运行的程序。
#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("%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; }
这是我尝试使用Ubuntu 11.10编译程序时遇到的错误:
cc word.c -o word word.c:4:5: error: conflicting types for ‘getline’ /usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here word.c:26:5: error: conflicting types for ‘getline’ /usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here make: *** [word] Error 1
只是为了确保书中的印刷没有问题,我在这本书的本章练习的后面引用了这套答案(http://users.powernet.co.uk/eton/kandr2/krx1。 html),当我尝试从该链接运行练习18、19、20、21等时,出现类似的错误。当我无法运行程序以查看其输出时,真的很难学习。在一个程序中引入字符数组和函数调用时,开始出现此问题。我很乐意就此问题提出任何建议。
问题在于这getline()是一个标准的库函数。(在中定义stdio.h)您的函数具有相同的名称,因此与之冲突。
getline()
stdio.h
解决方案是简单地更改名称。