格式'%s'需要'char *'类型的参数,但参数2的类型为'int'

时间:2017-12-10 17:18:28

标签: c

所以我刚开始用C编码。我正在编写这个自定义压缩功能,我有一个错误我无法解释。目标是从代码中取出字母“c”。当我尝试编译时,我收到了标题中提供的警告。 '** argv'是如何成为'int'的?

void main(int argc, char **argv)
{
int i,j;
for(i=j=0; argv[1][i] != '\0'; i++)
    if(argv[1][i] != 'c')
        argv[1][j++] = argv[1][i];
argv[1][j] = '\0';
for(i=0; argv[1][i] != '\0'; i++)
    printf("%s", argv[1][i]);
}

2 个答案:

答案 0 :(得分:2)

更改此

printf("%s", argv[1][i]);

printf("%c", argv[1][i]);

或更好,删除最后一个:

 printf("%s", argv[1]);

答案 1 :(得分:2)

**argvchar。但是当您将char值作为...个参数之一传递给可变参数函数(例如printf)时,它会自动转换为int。这就是**argv成为int的方式。

在任何情况下%s都不适合打印单个字母。您显然想打印一个char。这是用%c格式完成的。