无法在C中传递2D char数组(似乎只传递了第一个索引)

时间:2012-07-07 18:28:24

标签: c arrays function multidimensional-array

这是我写的一大部分功能。文件[120] [80]传入一行数字和字符。

void Print(char File[120][80], int Lines, char* COMMAND) {
    //Print whole file.
    if (!spaces(COMMAND)) {
        int i = 0;
        for (i; i<Lines; i++) {
            printf("%i===%s", i+1, File[i]);
        }
    }
}

运行它(对于4行文件)的结果是:

1===Line 1.
2===3===4===

所以似乎只有第一个索引才真正被传递。

1 个答案:

答案 0 :(得分:0)

问题可能在于你如何调用Print或初始化你传递的数组 - 如果我添加以下内容,它对我来说效果很好:

int spaces(const char *s) { return 0; }

int main()
{
    char File[][80] = {
        "Line1\n", "Line2\n", "Line3\n", "Line4\n"
    };
    Print(File, 4, "test");
    return 0;
}