c - 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));
}
}
我究竟做错了什么?
解决方案
错误消息是不言自明的,存在数据类型不匹配。
另一种写作语法*(wochentag + i)
是(wochentag[i])
type char *
。
现在,将其传递给%c
是错误的,因为此转换规范需要一个char
类型。
如果您只对第一个字符感兴趣,则必须对该数组进行索引,例如(wochentag[i][0])
. 就像是
printf("%c\n", wochentag[i][0]);
应该管用。
推荐阅读
- php - 在 WooCommerce 中以编程方式设置运输设置
- node.js - 如何在嵌套的对象数组中使用 Mongoose 填充数据?
- pandas - df.corr() 函数是否适用于时间序列列?
- airflow - 如何在气流中隐藏查询渲染(隐藏日志中的秘密)
- flutter - 无法在颤动中获得 percent_indicator 依赖项
- embedded - Mission Planner 如何更新参数列表值?
- python - 了解 mypy 覆盖率报告着色(任何类型,省略泛型)
- c# - 使用 Wix Toolkit 在 Azure DevOps 中构建 MSI
- python - 将excel转换为PDF,但作为横向
- php - 如何使用 PHP 将此日期:“16/11/2020 12:00:00 am”转换为“2020-11-16 00:00:00”?