C char在编译时显示为int

0 c int printf char compiler-warnings

我正在学习C,并且一直在尝试创建一个接受用户输入的程序,并删除其中的任何双重空格,然后再将其打印出来.我们还没有完成数组,所以我需要通过char来做这个char.这是我的代码:

#include <stdio.h>

main()
{
    char c;
    int count;
    count = 0;

    while ((c = getchar()) != '\n')
        if (c == ' ')
            count++;
        if (c != ' ')
            count = 0;
        if (count <= 0)
            printf("%s", c);
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码不起作用.编译器返回错误

:15: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
Run Code Online (Sandbox Code Playgroud)

有帮助吗?我不知道我做错了什么.

sim*_*onc 8

使用%c格式说明符打印单个char

printf("%c", c);
Run Code Online (Sandbox Code Playgroud)

%s格式说明告诉printf期望的空终止字符阵列(也叫做字符串).

错误消息指的是由于传递给的参数的默认提升(超出格式字符串)而c具有的类型. 之前的答案对默认促销有很好的描述; 此前一个主题解释了为什么需要进行默认促销的一些原因.intprintf