首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个关于字符串数组的有关问题

2012-03-15 
一个关于字符串数组的问题char **temp;int get_text( char *filename, char **arr ){FILE *fpint jchar

一个关于字符串数组的问题
char **temp;
int get_text( char *filename, char **arr )
{
  FILE *fp;
  int j;

  char buf[512];

  int i = 0,n = 2;
  fp = fopen( filename,"r");
  if( fp == NULL )
  {
  printf("cannot open file\n");
  exit(1);
  }
  arr = (char **)malloc(n*sizeof(char *));
 
  while( fgets(buf,512,fp) != NULL )
  {
  if(i >= n)
  {
  n = n+1;
  arr = (char**)realloc(arr, n * sizeof(char*));
  }
  char *tmp = (char *)malloc(strlen(buf)+1);
  strcpy( tmp,buf );
  arr[i++] = tmp;
  }

  for(j = 0; j< n; ++j)
  {
  printf("%s",arr[j]);
  }

  fclose(fp);
  return n;
}

上面代码的作用是把filename这个文件中的文本读入一个字符串数组。
temp是全局变量,调用这个函数 get_text( filename, (char **)temp ), 在函数中可以输出读取到二维数组中的内容,可是我在函数外调用如temp[2]想获取文件中的第三行内容时却出现运行时错误。请问这是什么原因呢?请高手指教

[解决办法]
get_text没有传回temp分配后的地址
如果是C++,将函数原型改成

C/C++ code
int   get_text(   char   *filename,   char   **&arr   ) 

热点排行