Я пытаюсь написать функцию, которая при вызове считывает некоторую дату (может быть файл или матрица, что не имеет значения) и возвращает указатель на эти данные. Я попытался следующий код:C: Возврат функции, указывающей на данные в памяти
#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 ("%d\n", (int)sizeof(rfml));
printf ("%s\n", rfml);
exit(0);
}
Но это не возвращает то, что я ожидал (содержание/и т.д./пароль файл).
Что я делаю неправильно в этом случае?
Cheers!
malloc копии, ну, память, 'read' - это способ, ну, читайте из файла. –
Пожалуйста, прочитайте книгу C. У вас есть фундаментальные недоразумения. – Olaf
Я читал много ;-) Может быть, я что-то пропустил, конечно. – Lin