读书人

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

发布时间: 2012-03-15 11:50:38 作者: rapoo

一个关于字符串数组的问题
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   ) 

读书人网 >C语言

热点推荐