返回一个指向内存数据的函数



我试图写一个函数,当调用读取一些日期(可以是一个文件或矩阵,没关系),并返回一个指针到该数据。我尝试了以下代码:

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/io.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
char * readfile_malloc(const char *filename) {
    char *f1;
    struct stat s;
    int fd;
    int st;
    off_t sz;

    fd = open( filename, O_RDONLY);
    st = fstat (fd, &s);
    sz = s.st_size;
    f1 = malloc(sz);
    return (char *) memcpy(f1,&fd,sz);
}

/* Test function */
int main(int argc, const char *argv[])
{
    char *rfml;
    rfml = readfile_malloc("/etc/passwd");
    printf ("%dn", (int)sizeof(rfml));
    printf ("%sn", rfml);
    exit(0);
}

但是它没有返回我所期望的(/etc/passwd文件的内容)。

在这种情况下我做错了什么?

干杯!

如果要从文件中读取,则需要使用fread。在您的代码中,memcpy只是从FILE指针复制,而不是文件。

您没有将文件的内容读取到readfile_malloc中的f1中。您正在记忆从文件描述符的地址(fd)到f1。

相关内容

  • 没有找到相关文章

最新更新