首页 > 解决方案 > C - 格式指定类型“int”,但参数的类型为“char *”[-Wformat]

问题描述

我已经定义了vector工作日的指针。稍后,我想对日子进行排序lexicographically

我使用printf("%s", *(wochentag + i));which works 打印所有工作日。我想要每个工作日的每个第一个字母的输出。稍后,我还想访问每个单词的第二、第三、...字母。

通过使用

printf("%c", *(wochentag + i));` 

我收到以下警告:

format specifies type 'int' but the argument has type 'char *' [-Wformat].

这是我的代码:

int main()
{
   static char *wochentag[] = {"Montag", "Dienstag", "Mittwoch", "Donnerstag", 
                        "Freitag", "Samstag", "Sonntag"};
    printf("%lu\n", sizeof(wochentag));
    printf("%lu\n", sizeof(char));
    for (int i = 0; i < 7; i++)
    {
        printf("%s\n", *(wochentag + i));
    }
    for (int i = 0; i < 7; i++)
    {
        printf("%c\n", *(wochentag + i));
    }
}

我究竟做错了什么?

标签: cstringpointerscharprintf

解决方案


错误消息是不言自明的,存在数据类型不匹配。

另一种写作语法*(wochentag + i)(wochentag[i])type char *

现在,将其传递给%c是错误的,因为此转换规范需要一个char类型。

如果您只对第一个字符感兴趣,则必须对该数组进行索引,例如(wochentag[i][0]). 就像是

 printf("%c\n", wochentag[i][0]);

应该管用。


推荐阅读