无法在C中传递2D字符数组(似乎只传递第一个索引)
这是我写的函数的一部分。文件[120][80],一个由行和字符组成的数组,被传入无法在C中传递2D字符数组(似乎只传递第一个索引),c,arrays,function,multidimensional-array,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]);
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]);
}
}
}
因此,似乎实际上只传递了第一个索引。问题可能在于如何调用
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;
}
其他字符串似乎为空。如何读取文件?此代码正确()。问题一定出在读取文件的代码上。文件是用fgetc读取的。我签入main(),数组已正确填充。我将其称为Print(文件、行、命令);。数组定义为char文件[120][80];。如何初始化
文件
?那么,它不包含任何内容,因此打印例程不打印任何内容也就不足为奇了……稍后会填充它,我可以成功地检查main()中的内容。@Alexandrachar File[120][80]代码>是一种声明,而不是初始化。“稍后填充”的代码很可能是您的初始化。这就是克里斯想看到的代码。
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;
}