如何调用函数在C中打印2D const char *数组?

时间:2017-05-01 16:19:15

标签: c arrays pointers

我希望能够使用const char *命名的2D数组调用函数。在我的程序中,我打开一个CSV输入,读取行数,创建一个适当大小的2D数组(从文件复制数据 - 这个步骤不是为了问题而在代码中)然后想要打印它(不是在主函数中,减少行数)。

对于此示例,我们可以忽略CSV组件,因此我添加了一个示例数组,只是为了试用它。

我知道我在main()和show()之间的数组切换中的指针迷路了,因为我得到错误"下标值既不是数组也没有指针也没有矢量。"我只是不知道如何解决它。关于如何解决这个问题的任何指示?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define col 4

void show(const char* A){
    int i, j;

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            if(A[i][j])
                printf("%s\t", A[i][j]);
            else
                printf("%s\t", "NULL");
        }    
        printf("\n");
    }
}

int main () {
    FILE* t1count = fopen("input/t1_input.csv", "r");
    t1row = countlines(t1count); // Where countlines is another function I have written but not relevant in this case

    const char *strings[t1row][col]; //For this example we can use: = {{"4001","CA52","C14M731345","5"},{"4010","CA52","C14M731559","5"},{"4101","CA52","C14M731559","5"},{"4029","CA72","B15M731038","9"}};

    show(strings);
}

谢谢!

1 个答案:

答案 0 :(得分:0)

函数参数void show(const char* A)与调用show(strings);时传递的参数之间存在类型不匹配

将您的函数原型更改为

void show(const char* A[][col])