【问题标题】:C what % symbol to access arrays?C 什么 % 符号来访问数组?
【发布时间】:2015-04-01 18:35:45
【问题描述】:

我正在尝试访问多维数组的单行。但是,我不断收到以下错误消息: format 指定类型“int”,但参数的类型为“int *”。 我认为这是说数组有特定的格式;如果不是 %i,我用什么符号来访问它们?

#include <stdio.h>

int main(void) {

    int matrix1[5][4] =
        {{1,2,3,4},
        {5,6,7,8},
        {9,10,11,12},
        {13,14,15,16},
        {17,18,19,20}};

    printf ("%i",matrix1[0]);


    return 0;
}

【问题讨论】:

  • 你想访问哪个元素?

标签: c arrays


【解决方案1】:

您正在访问将转换为类型int * 的数组的第一行,这就是您的编译器消息的原因。

如果你想打印整行,你可以试试

int i;
for (i = 0 ; i < 4 ; ++i)
    printf("%d ", matrix1[0][i]);
    /*                       ^ another index to specify an integer from the array */
printf("\n");

如果你只想要数组的第一行第一列试试

printf("%d\n", matrix1[0][0]);

【讨论】:

    【解决方案2】:

    我假设它是说数组有特定的格式

    这表示您正在尝试使用%i,它用于打印单个整数。没有直接打印数组的格式,您必须在%i 格式周围提供自己的胶水。

    换句话说,要打印一行,你必须使用类似的东西:

    printf ("%i %i %i %i", matrix1[0][0], matrix1[0][1], matrix1[0][2], matrix1[0][3]);
    

    【讨论】:

      【解决方案3】:

      如果不是%i,我用什么符号来访问它们?

      printf 系列函数中没有用于打印数组的格式说明符。格式说明符仅支持编写原始数据类型 - charint 等。完整列表可使用 man printfhttp://en.cppreference.com/w/c/io/fprintf 以及网络上的许多其他资源找到。

      要写入数组中的所有元素,您需要使用循环遍历项目并逐个写入每个元素,例如@iharob's answer 中的代码。

      【讨论】:

        猜你喜欢
        • 2015-09-26
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 2010-10-22
        相关资源
        最近更新 更多