fs_long_path.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define FILENAME_MAX_LENGTH 255
  5. #define PATH "tmp/"
  6. #define MSG "Hello World"
  7. int main(int argc, char** argv) {
  8. size_t rets;
  9. int reti;
  10. char filename[FILENAME_MAX_LENGTH];
  11. memset(filename, 'a', sizeof(filename));
  12. filename[FILENAME_MAX_LENGTH-1] = '\0';
  13. char filepath[sizeof(PATH) + sizeof(filename) - 1];
  14. strcpy(filepath, PATH);
  15. strcat(filepath, filename);
  16. printf("filepath = %s (len = %lu)\n", filepath, strlen(filepath));
  17. /* write to file */
  18. FILE* fp = fopen(filepath, "w");
  19. if (fp == NULL) {
  20. perror("fopen failed");
  21. return 1;
  22. }
  23. rets = fwrite(MSG, sizeof(MSG), 1, fp); /* with NULL byte for later printf */
  24. if (rets != 1) {
  25. perror("fwrite failed");
  26. return 1;
  27. }
  28. reti = fclose(fp);
  29. if (reti) {
  30. perror("fclose failed");
  31. return 1;
  32. }
  33. /* read from same file */
  34. fp = fopen(filepath, "r");
  35. if (fp == NULL) {
  36. perror("fopen failed");
  37. return 1;
  38. }
  39. char buf[256];
  40. clearerr(fp);
  41. rets = fread(buf, sizeof(buf), 1, fp);
  42. if (rets != 1 && ferror(fp)) {
  43. perror("fread failed");
  44. return 1;
  45. }
  46. reti = fclose(fp);
  47. if (reti) {
  48. perror("fclose failed");
  49. return 1;
  50. }
  51. reti = printf("Successfully read from file: %s\n", buf);
  52. if (reti < 0) {
  53. perror("printf failed");
  54. return 1;
  55. }
  56. return 0;
  57. }