C++在函数中如何能return一个数组型的字符串

2024-12-14 09:46:18
推荐回答(4个)
回答1:

1. 按照你的写法, buff是在read()的函数栈中分配的, 当read()函数调用完毕后, 栈上的内容会被释放, 所以在main()调用read()后, 进行printf()获得的很有可能是无效的数据. 这种方法不可行.

2. 尽量通过扩展参数的方式把buff传递给read()函数, read()函数将结果写入buff并返回
int read(int fd, char *buff, int len){... return 1;}
int main()
{
char buff[8];
if(read(fd, buff, 8) != 0)
printf("%s\n", buff);
else
printf("error\n");
}

3. 或者如果read()参数不可扩展, 可以通过static 变量或者全局变量
c文件头部定义char buff[8]; // 或者 static char buff[8]; 减少全局变量
read()函数中删除char buff[8];的定义就可以了.

回答2:

public char* read(int fd)
{
....................
return buff;
}

或者使用String 类型的字符串
public String read(int fd)
{
String buff;
read(fd,buff,8) ;
return buff;
}
main()
{
String str=read(fd);
.............
}

回答3:

定义函数的时候应该是 char* read(int fd){}
return &buff[0];
buff应该定义在全局吧。。局部变量在函数调用完就释放了。。
printf("%s",str);

如果没记错的话应该是这样的。。我自己也没试 不保证一定正确哦

回答4:

buff是char型 可以直接返回