您的位置:首页 > 其它

二级指针拷贝

2014-02-07 11:31 169 查看
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{

  int maxLen=0;
  //N = argc;
  char **ptr = NULL;
  int i = 0;
  //============以下程序是为了求出argv[][]数组中最长的串长度,把最长串长度保存在maxLen里
  maxLen=strlen(argv[0]);
  for (i = 1; i < argc; i++)
  {
    maxLen = maxLen > strlen(argv[i])?maxLen:strlen(argv[i]);
  }
  //maxLen自增,是为了多出一个位置以便存放字符串结束符'\0'
  maxLen++;
  //printf("====%d==\n",maxLen);

  //先申请一个含有argc个char *指针的二级指针空间,然后再给每个ptr[i]指针申请长度为maxLen的指针空间。
  ptr = (char **)malloc(sizeof(char *) * argc);
  for (i = 0; i < argc; i++)
  {
    ptr[i] = (char *)malloc(sizeof(char) * maxLen);
  }

  //把**argv的内容拷贝到**ptr指向的空间
  for (i = 0; i < argc; i++)
  {
    strcpy(ptr[i],argv[i]);
  }

  for(i = 0; i < argc; i++)
  {
    printf("argv[%d]=%s\n",i,argv[i]);
  }
  //用完后注意free指针空间
  for(i = 0; i < argc; i++)
  {
    free(ptr[i]);
  }
  free(ptr);
  ptr = NULL;
  return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: