我正在尝试将2d数组转换为双指针,我在stackoverflow上找到了一个解决方案,但它不起作用,如果我打印它只是胡言乱语......
我必须这样做,因为我之后调用的函数需要一个const char **而且我无法改变它。
void test(const char** sl, int n) {
char s[n][20], t[20];
int i, j, a;
for(i = 0; i < n; ++i) {
strcpy(s[i], sl[i]);
}
for (i = 1; i < n; i++) {
for (j = 1; j < n; j++) {
if (strverscmp(s[j - 1], s[j]) > 0) {
strcpy(t, s[j - 1]);
strcpy(s[j - 1], s[j]);
strcpy(s[j], t);
}
}
}
char *solutionPtrs[n];
for (a = 1; a < n; a++)
solutionPtrs[n] = s[n];
char **ptr = solutionPtrs;
printf("\nStrings in order are : ");
for (i = 0; i < n; i++)
printf("\n%s", ptr[i]); <-- just not what it should be.
}
有人可以告诉我它为什么不起作用吗?
答案 0 :(得分:1)
我觉得这里有一个错误:
for (a = 1; a < n; a++)
solutionPtrs[n] = s[n];
你的意思是:
for (a = 0; a < n; a++)
solutionPtrs[a] = s[a];