问这样一个问题我很尴尬,但自从我用 C 编码以来已经有好几年了,坦率地说,这门语言回到我身边的时间比我预期的要长得多。
我在我的代码中收到以下警告“格式 %s 需要 char * 类型的参数,但参数 2 的类型为 int”,如下所示。
#include <stdio.h>
#define MAXLINE 1000
int getNextLine(char line[], int maxline);
void reverse(char line[], int len);
main()
{
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max = 0;
while ((len = getNextLine(line, MAXLINE)) > 0)
{
reverse(line, len);
}
return 0;
}
void reverse(char line[], int len)
{
if (len == 0)
return;
else
{
printf("%s",line[len-1]);
line[len-1] = '\0';
//reverse(s,len-1);
}
return;
}
int getNextLine(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;
}
我不明白的是,它似乎与参数有关吗?当我剥离 reverse() 使其接受 0 个参数并仅打印出一行乱码时,程序编译时不会发出警告。因此,我怀疑参数是我的问题。更令人困惑的是,函数 getNextLine() 具有相同的参数计数和类型,但这个函数没有问题?
谢谢,克里斯