C将字符串保存为2d数组

时间:2011-02-05 22:39:49

标签: c arrays matrix realloc alloc

我们的想法是从标准输入读取字符串,直到达到EOF(格式为"string - string")。然后,将字符串分成两个字符串,并将它们保存为二维数组。该数组最初动态分配了2行20列,但每次我想添加下一个字符串时,我想添加2行(函数expandmat())。这是我的代码:

char ** alloc(int rows, int collums) {
   char ** mat;
   int i;
   mat = malloc(sizeof (char *) * rows);
   for (i = 0; i < rows; i++) {
      mat[i] = malloc(sizeof (char) * collums);
   }
   return mat;
}

char ** addtoarray(char ** mat, char * string1, char * string2, int position) {

   sscanf(string1, "%s", mat[positon]);
   sscanf(string2, "%s", mat[positon+1]);
   return mat;
}

char ** getinput(char * longstring, char * string1, char * string2) {

   int position = 0, n = 2, max = 30;
   char ** mat;
   mat = alloc(n, max);
   while (fgets(longstring, max, stdin)) {
        sscanf(longstring, "%s - %s", string1, string2);
        addtoarray(mat, string1, string2, positon);
        n += 2;
        position += 2;
        mat = expandmat(mat, n);
   }

   return mat;
}

此外,如果此代码中有任何内容没有任何意义,请告诉我如何修复它?

我知道这似乎是一项微不足道的任务,但它一直让我发疯。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

查看realloc C函数以调整mat大小。

expandmat应重新分配,以便您可以再添加两行(它也应该返回矩阵,因为如果需要,realloc会将内存复制到新位置)

答案 1 :(得分:0)

哇......第三次出现这样的问题: - )。

请检查我的答案是否可以帮助您:Array of C structs