从stdout读取并获取字符串

时间:2013-09-01 20:08:28

标签: c stdout

我想为我糟糕的英语道歉,因为它不是我的母语

所以,这是我的问题。有什么方法,用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;
}

但我无法将其变成字符串。

3 个答案:

答案 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变量的使用方式。