Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C函数参数_C_Parameters - Fatal编程技术网

C函数参数

C函数参数,c,parameters,C,Parameters,我很不好意思问这样一个问题,但我用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 l

我很不好意思问这样一个问题,但我用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;
} 
#包括
#定义MAXLINE 1000
int getNextLine(字符行[],int maxline);
无效反转(字符行[],整数长度);
main()
{
内伦;
int max;
字符行[MAXLINE];
字符最长[MAXLINE];
max=0;
而((len=getNextLine(line,MAXLINE))>0)
{
反向(直线、透镜);
}
返回0;
}
无效反转(字符行[],整数长度)
{
如果(len==0)
返回;
其他的
{
printf(“%s”,第[len-1]行);
第[len-1]行=“\0”;
//反面(s,len-1);
}
返回;
}
int getNextLine(字符s[],int lim)
{
int c,i;
对于(i=0;i
我不明白的是,它似乎有一些参数?当我把reverse()去掉,使它只接受0个参数并输出一行胡言乱语时,程序编译时不会发出警告。因此,我怀疑这些参数是我的问题。更令人困惑的是,函数getNextLine()具有相同的参数计数和类型,但该函数没有任何问题

谢谢,
Chris

这是因为
line[len-1]
不是字符串。
line
是字符串,所以尝试
printf(“%s”,line)
printf(“%c”,line[len-1])
而是因为
line[len-1]
不是字符串。
line
是字符串,所以尝试
printf或
printf(“%s”,line)
printf[len-1])
相反

函数
反向
采用
字符[]
类型的参数
,即
字符的数组,即字符串,因此:

printf("%s", line[len-1]);
应为(如果要打印单个字符):

或者(如果要打印以null结尾的字符串):


“函数
getNextLine
具有相同的参数计数和类型,但此函数没有问题?”
~>编译器给您的错误与
printf
有关,它不在其他函数中使用

“我用C编码已经好几年了”

~>旁注:您的代码提醒了旧的ANSI C。距离上次在函数开始时声明所有变量已经很长时间了。

函数
反向
使用
字符[]
类型的参数
,即
字符的数组,即字符串,因此:

printf("%s", line[len-1]);
应为(如果要打印单个字符):

或者(如果要打印以null结尾的字符串):


“函数
getNextLine
具有相同的参数计数和类型,但此函数没有问题?”
~>编译器给您的错误与
printf
有关,它不在其他函数中使用

“我用C编码已经好几年了”

~>旁注:您的代码提醒了旧的ANSI C。自从上次在函数开头声明所有变量以来,已经有很长时间了。

一个字符在C.行[len-1]中有int类型然后转换为int,这正是编译器所抱怨的。看到%s限定符printf函数需要一个指向字符串开头的指针。它随后将打印从指定地址开始的字符,直到遇到\0为止。
如果要打印一个字符,请使用%c并提供一个int(也称为char)。

一个字符在c.行[len-1]中具有int类型然后转换为int,这正是编译器所抱怨的。看到%s限定符printf函数需要一个指向字符串开头的指针。它随后将打印从指定地址开始的字符,直到遇到\0为止。
如果要打印一个字符,请使用%c并提供一个int(也称为char).

您正在将一个字符传递给printf,它需要一个字符*。您希望printf做什么?它肯定不会反转您的字符串。您正在将一个字符传递给printf,它需要一个字符*。您希望printf做什么?它肯定不会反转您的字符串。我正在一所大学上课,所以我们被告知要做的当然是Y耳朵在曲线后面。谢谢你的建议,让我努力改变我的代码。我在一所大学上课,所以我们被告知要做的当然是在曲线后面几年。谢谢你的建议,让我努力改变我的代码。
printf("%s", line);