动态二维数组——The dynamic two-dimensional array

//The dynamic two-dimensional array

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
 int i;
 int nu = 0;
 char temp[100] = {0};
 char **p = NULL;
 char **q = NULL;

 while(1)
 {
  scanf("%s",temp);
  if(!strcmp(temp,"quit"))
  {
   break;
  }
  nu++;

  q = p;
  p = (char**)malloc(sizeof(char*)*nu);
  if(p == NULL)
  {
   return 1;
  }
  for(i = 0; i < nu - 1; i++)
  {
   p[i] = q[i];
  }

  p[i] = (char*)malloc(strlen(temp) + 1);
  if(NULL == p[i])
  {
   for(i = 0; i < nu -1; i++) 
    {
     free(p[i]);
    }
    free(p);
    free(q);
   return -2;
  }

  strcpy(p[i],temp);

  if(q != NULL)
   free(q);
 }

 for(i = 0; i < nu; i++)
 {
  printf("%s ",p[i]); 
 }
 putchar('\n');
 
 for(i = 0; i < nu; i++)
 {
  free(p[i]);
 }
 free(p);

 return 0;
}

你可能感兴趣的:(c,二维数组,malloc,C语言,sizeof)