在子函数中,定义的数组变量是不允许返回的,因为它只是临时变量,暂存与当前堆栈里面,只要函数调用结束,数组马上被释放。
但当有时我们需要返回有关数据的指针或数组时,有几种方法可以解决:
(1)我们直接把给函数传进数组指针的参数,也就是说你在调用之前先创建数组,作为参数传递进函数,然后返回
例 读取文件的一行数据
char * getFileOneLine(char *fileName,char *content){
FILE *fp;
fp=fopen();//打开文件
if(fp==NULL){//文件指针指空
AfxMessageBox("无法打开文件");//VC
printf("Cannot open this file,Please check it\n");
return (char *)(NULL);
}
if(!fgets(buffer,250,fp)){//读取文件一行,其遇'\r\n'(windows中) '\n'(linux/unix中) 或读到末尾截止 ,这里暂读250字节存于buffer中,也就
//是说在调用该函数的buffer必须大于250否则有可能缓冲区溢出
return (char *)(NULL);
}
fclose(fp);
return buffer;
}
(2)在子函数中定义静态边数组,这也是很方便的
例