我想为我糟糕的英语道歉,因为它不是我的母语
所以,这是我的问题。有什么方法,用C语言,从我的标准读取,并把我读到的任何东西变成*char
?我只能使用函数read,write,malloc和free。
我的实际代码如下所示
char* acquire_shape()
{
char *buffer[BUF_SIZE + 1];
int ret;
ret = read(0, buffer, BUF_SIZE)
buffer[ret] = '\0';
return *buffer;
}
但我无法将其变成字符串。
答案 0 :(得分:0)
注意,您需要使用malloc
释放分配有free
的内存:
char* acquire_shape(int fd) {
char *buffer = malloc(BUF_SIZE + 1);
int ret;
if (buffer == NULL)
return NULL;
ret = read(fd, buffer, BUF_SIZE);
buffer[ret] = '\0';
return buffer;
}
答案 1 :(得分:0)
char buffer[BUF_SIZE + 1];
就是你的意思......除了你不能正确地返回它,因为它是指向本地存储的指针(在函数返回后未定义)。最好的办法是将你的功能改为:
char* acquire_shape(char *buffer)
{
int ret;
ret = read(0, buffer, BUF_SIZE)
buffer[ret] = '\0';
return *buffer;
}
并将其称为:
char mybuffer[BUF_SIZE + 1];
acquire_shape(mybyffer);
答案 2 :(得分:0)
char *buffer[BUF_SIZE + 1];
的声明不是指向char类型的指针,而是指向char类型指针的指针。如果要创建指向char的指针,则需要为缓冲区分配内存:
char *buf = (char *) malloc(BUFSIZE + 1);
if (buf == NULL)
return NULL;
然后,您可以使用变量buf
完全按照代码示例中buffer
变量的使用方式。