从2d数组转换为双指针

时间:2015-04-23 15:37:13

标签: c arrays pointers

我正在尝试将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.

}

有人可以告诉我它为什么不起作用吗?

1 个答案:

答案 0 :(得分:1)

我觉得这里有一个错误:

for (a = 1; a < n; a++)
        solutionPtrs[n] = s[n];

你的意思是:

for (a = 0; a < n; a++)
        solutionPtrs[a] = s[a];