我正在将一个多维字符数组传递给c中的函数。 main()或其他函数确定输入数组的大小(尺寸)。我想在我的函数中动态地确定数组的长度和宽度。到目前为止,我已经能够为第一行动态确定宽度。但是,如果我尝试使用相同的逻辑来确定长度,则会出现访问冲突错误。这是我到目前为止的代码:c char **导致分配错误
char * myfunc(char* in[])
{
int index=0, cols=0;
while(in[0][index++] != '\0');
cols = index - 1;
:
:
}
int main()
{
char *in[3] = {"abcd","efgh","ijkl"};
char *out = myfunc(in);
:
:
}
对我来说幸运的是,**中所有'行'中的'cols'是相等的。我知道更强大的方法是首先确定行数,然后测试每行后面的列数。每当我尝试为行执行类似操作时,我都会导致访问冲突错误。
我应该提到,我无法重新定义传递数组维数的函数。我还应该提到,这不是作业或工作,我刷过C编码技能时遇到了这个问题。有没有一种方法可以确定上述情况下的行数而不会导致访问冲突错误?
对于初学者来说,这应该是'const char * in [3]'。这些是字面常量。所以你的参数声明也应该如此。 – WhozCraig 2013-04-22 16:16:15
我真的不控制调用这个函数的函数。这是一个挑战。 – BigLib 2013-04-22 18:15:06
你不需要控制调用者。调用者可以传递非常量字符串(如果他们想要的话)。但除非你打算修改它们,或者将它们传递给一个函数,否则没有理由*不*要在这里将传入的指针*声明为const。来电者会很好。反过来说(调用者用'const'指针调用,而你需要非const),你会遇到问题,但我在这里看不到这种情况。 – WhozCraig 2013-04-22 18:57:52