#include <stdio.h>
#define MAXLINE 10
void reverse(char s[]);
void getline(char b[], int lim);
int main() {
char s[MAXLINE];
getline(s, MAXLINE);
reverse(s);
return 0;
}
void reverse(char s[]) {
int i;
int len = 0;
for (i=0; s[i] != '\0'; i++) {
len = len + 1;
}
char b[len + 1];
for (i = 0; i < len; i++) {
b[(len - 1) - i] = s[i];
b[len] = '\0';
}
printf("%s : %s\n", s, b);
}
void getline(char b[], int lim) {
char c;
int i;
for (i=0; i < lim-1 && (c = getchar())!= EOF && (c!='\n'); ++i) {
b[i] = c;
}
if (c == '\n') {
b[i] = '\n';
}
}
为什么我在获取行功能时收到错误?它在 Xcode 中说“‘get line’的类型冲突。此外,在另一个错误中,它说“函数调用的参数太少,预期为 3 个,有 2 个?
有人可以解释 for 循环的“条件”部分的评估顺序吗? (我说的是&&)。非常感谢!!!
最佳答案
(1)..你的程序是正确的。但是,已经有一个库函数getline
存在于库中。我们知道预定义函数的原型(prototype)声明存在于头文件中。对于 getline
预定义函数,声明已存在于 stdio.h
中...在您的程序中,您还被声明为 getline
的原型(prototype)。我们很清楚,一个函数不可能有两个声明。所以只有你得到了错误。尝试用该函数的其他名称运行你的程序...
(2)..for (i=0; i < lim-1 && (c = getchar())!= EOF && (c!='\n'); ++i)
在 for 循环中,您正在检查三个条件..您也在检查 '\n' 。所以,您应该仅以字符串格式给出输入。但实际上它不是字符串。您应该连续给出字符作为输入,而不按输入。
关于有人可以帮我解释一下 for 循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25598323/