所以我刚开始用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]);
}
答案 0 :(得分:2)
更改此
printf("%s", argv[1][i]);
到
printf("%c", argv[1][i]);
或更好,删除最后一个:
printf("%s", argv[1]);
答案 1 :(得分:2)
**argv
是char
。但是当您将char
值作为...
个参数之一传递给可变参数函数(例如printf
)时,它会自动转换为int
。这就是**argv
成为int
的方式。
在任何情况下%s
都不适合打印单个字母。您显然想打印一个char
。这是用%c
格式完成的。