首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C函数参数

C函数参数
EN

Stack Overflow用户
提问于 2013-09-30 05:51:29
回答 3查看 340关注 0票数 1

我很尴尬地问了这样一个问题,但我已经多年没有用C编写代码了,坦率地说,这门语言花了比我预期的更长的时间才回到我的脑海中。

在我的代码中,我得到了以下警告:"format %s需要char *类型的参数,但参数2具有int类型“,如下所示。

代码语言:javascript
复制
#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()具有相同的参数计数和类型,而这个函数却没有问题?

谢谢,克里斯

EN

回答 3

Stack Overflow用户

发布于 2013-09-30 05:55:14

这是因为line[len-1]不是字符串。line是字符串,所以请尝试使用printf("%s" , line)printf("%c" , line[len-1])

票数 2
EN

Stack Overflow用户

发布于 2013-09-30 05:57:28

函数reverse接受类型为char[]的参数line,即char数组,即string,因此:

代码语言:javascript
复制
printf("%s", line[len-1]);

应为(如果要打印单个字符):

代码语言:javascript
复制
printf("%c", line[len-1]);

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

代码语言:javascript
复制
printf("%s", line);

函数getNextLine具有相同的参数计数和类型,但此函数没有问题?

~>编译器给出的错误与printf有关,其他函数中没有使用该错误。

“我已经好几年没有用C编写代码了。”

~>旁注:您的代码让人想起了旧的ANSI。自从上一次必须在函数开头声明所有变量以来,已经很长时间了。

票数 2
EN

Stack Overflow用户

发布于 2013-09-30 06:02:09

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19083713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档