Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. typedef struct file_t {
  4. char *name;
  5. FILE *file;
  6. char *(*read)(File*);
  7. long int (*size)(File*);
  8. } File;
  9.  
  10. long int file_t__size(File *this) {
  11. fseek(this->file, 0, SEEK_END);
  12. long int fsize = ftell();
  13. rewind(this->file);
  14. return fsize;
  15. }
  16. char *file_t__read(File *this) {
  17. long int fsize = this->size(this);
  18. char *buff = malloc(fsize + 1);
  19. buff[fsize] = '\0';
  20. long int rsize = fread(buff, 1, fsize, this->file);
  21. if(rsize != fsize) {
  22. free(buff);
  23. return NULL;
  24. }
  25. return buff;
  26. }
  27.  
  28. file_t open_file(char *fname) {
  29. return (File) {
  30. fname,
  31. fopen(fname, "r"),
  32. &file_t__read,
  33. &file_t__size
  34. };
  35. }
  36.  
  37. int main() {
  38. char *fname = malloc(1024);
  39. printf("Enter file name (max. 1024 chars): ");
  40. scanf("%s1024", fname);
  41. File file = open_file(fname);
  42. return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement