在 C 中返回多维 char 数组
在 C 语言中,如何创建一个返回字符串数组的函数?或者多维字符数组?
例如,我想返回在函数中创建的数组 char paths[20][20]
。
我最近的尝试是
char **GetEnv()
{
int fd;
char buf[1];
char *paths[30];
fd = open("filename" , O_RDONLY);
int n=0;
int c=0;
int f=0;
char tmp[64];
while((ret = read(fd,buf,1))>0)
{
if(f==1)
{
while(buf[0]!=':')
{
tmp[c]=buf[0];
c++;
}
strcpy(paths[n],tmp);
n++;
c=0;
}
if(buf[0] == '=')
f=1;
}
close(fd);
return **paths; //warning: return makes pointer from integer without a cast
//return (char**)paths; warning: function returns address of local variable
}
我尝试了各种“设置”,但每个设置都会给出某种错误。
我不知道C是如何工作的
In C, how can I create a function which returns a string array? Or a multidimensional char array?
For example, I want to return an array char paths[20][20]
created in a function.
My latest try is
char **GetEnv()
{
int fd;
char buf[1];
char *paths[30];
fd = open("filename" , O_RDONLY);
int n=0;
int c=0;
int f=0;
char tmp[64];
while((ret = read(fd,buf,1))>0)
{
if(f==1)
{
while(buf[0]!=':')
{
tmp[c]=buf[0];
c++;
}
strcpy(paths[n],tmp);
n++;
c=0;
}
if(buf[0] == '=')
f=1;
}
close(fd);
return **paths; //warning: return makes pointer from integer without a cast
//return (char**)paths; warning: function returns address of local variable
}
I tried various 'settings' but each gives some kind of error.
I don't know how C works
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法安全地返回堆栈分配的数组(使用 array[20][20] 语法)。
您应该使用 malloc 创建动态数组:
然后返回数组即可
You can't safely return a stack-allocated array (using the array[20][20] syntax).
You should create a dynamic array using malloc:
Then returning array works
您应该只返回
array
(return array;
)。声明后的**
用于取消引用。另外,请确保该数组的内存是在堆上分配的(使用
malloc
或类似函数)You should just return
array
(return array;
). the**
after declaration are used for dereferencing.Also, make sure the the memory for this array is allocated on the heap (using
malloc
or simillar function)