我很尷尬地問這樣一個問題,但是我用C語言編寫已經有好幾年了,坦白地說,語言要比我想象的要長得多。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()具有相同的參數數量和類型,但這個函數沒有問題?
謝謝, 克里斯
你正在傳遞一個字符到printf,它需要一個char *。你期待printf做什麼?它肯定不會扭轉你的字符串。 – pburka