【问题标题】:Is there a way to change 'char (*)[10]' to 'char *'?有没有办法将 'char (*)[10]' 更改为 'char *'?
【发布时间】:2021-04-11 07:04:19
【问题描述】:

我正在尝试用 C 编写日历系统,但我经常收到同样的错误:

main.c:26:49: warning: format specifies type 'char *' but the argument has type
     'char (*)[10]' [-Wformat]

我的代码是

char months[12][10] = {
                         "January",
                         "February",
                         "March",
                         "April",
                         "May",
                         "June",
                         "July",
                         "August",
                         "September",
                         "October",
                         "November",
                         "December"
                     };

用于声明“月份”,并且

int i;
for(i = 0; i < 12; i++)
{
    printf("string = %s \t address = %u\n", months + i, (unsigned int)months + i);
}

用于打印。我尝试用*months**months(*char)months 替换月份,但都没有成功。我在这里检查了多个问题,但其中一个涉及我没有使用的scanf。即便如此,我尝试了对我不起作用的答案。另一个涉及函数,答案是将** 附加到参数的开头。这对我也不起作用。我知道我的问题可能很简单,但是我无法找到解决方案。如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 您似乎想要的是 months 数组的单个元素,(如果您对数组有所了解)将是例如months[i].
  • 好的,谢谢!我已经用 Python 编程了一段时间,所以我应该已经看到了这个错误。但是,我不确定 C 是否有特殊的语法,所以我不认为我给出的示例只是使用了奇怪的语法。非常感谢您向我指出这一点!

标签: arrays c char warnings


【解决方案1】:

试试看:

printf("string = %s \t address = %u\n", months[i], (unsigned int)&months[i]);

您必须更改 %u 才能消除另一个警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多