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];的定义就可以了.
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);
.............
}
定义函数的时候应该是 char* read(int fd){}
return &buff[0];
buff应该定义在全局吧。。局部变量在函数调用完就释放了。。
printf("%s",str);
如果没记错的话应该是这样的。。我自己也没试 不保证一定正确哦
buff是char型 可以直接返回