[완료]fread, fwrite 질문입니다 ㅠ
글쓴이: kombo67 / 작성시간: 일, 2018/02/04 - 9:17오후
실행하면
배운 언어 선택 또는 추가하고
뭘 배웠는지 적는 프로그램인데
추가를 하고 다음에 다시 켰을때 그게 보존되게 하려고
데이터 저장을 진행하게 되었습니다..
일단 코드는
while(1) { while (curr != NULL) { printf("[%d] %s\n\t%s\n", ++j, curr->name, curr->description); curr = curr->next; } printf("\n"); printf("Project_1 : "); scanf("%d", &gotcha); if (gotcha == 99) { fp = fopen("save_data_file", "rt"); if (fp == NULL ) { perror("Cannot Save a data on File\n"); exit(0); } fwrite(curr, sizeof(struct NODE), sizeof(curr), fp); // printf("Maybe Success\n"); fclose(fp); while(curr != false) { Dellist(curr); Dellist(head); Dellist(&temp); } exit(0); } else if (gotcha == 0 ) { Node* now = Addlist(target, &temp); if ( now == NULL ) { perror("리스트 추가 실패"); exit(0); } printf("노드를 추가했어 !\n"); printf("어떤 언어를 추가할꺼야 ?\n"); scanf("%s", now->name); getchar(); printf("설명란에 적을꺼 있음 적으셈 [없다면 그냥 엔터쳐 ㅋㅋㅋ]\n"); scanf("%[^\n]s", now->description); } else if (gotcha <= j) { } curr = head->next; j = 0; getchar(); }
대강 이런식입니다.
typedef struct NODE {
struct NODE *next;
char name[20];
char description[200];
} Node;
이런식입니다
#pragma pack(push, 1) // 요놈으로 최소사이즈 맞추고
해봤는데 안되네요 ㅠㅠ ( 위 코드는 작업중인것이고 테스트 코드를 작성하여 해봤으나 .. ㅠㅠ )
테스트 코드입니다
char *description = "리눅스 bash 스크립트, 시스템 콜 함수를 이용하여 하드웨어 쪽이나 파일을 제어할 수 있다, 물론 서버 자동화 에도 사용할 수 있다\n"; while(1) { fp = fopen("save_data_file", "wb"); if (fp == NULL ) { perror("Cannot Save a data on File\n"); exit(0); } printf("%lu\n", sizeof(description)); fwrite(description, 1, sizeof(description), fp); fclose(fp); exit(0); } FILE *fp; char *get; fp = fopen("save_data_file", "rb"); if(fp == NULL) { perror("Cannot Load a file : \n"); exit(0); } else { printf("Sueccss\n"); } printf("%lu\n", sizeof(char *)); fread(get, 1, sizeof(char *), fp); // reads an array of doubles puts("Array read successfully, contents: "); for(int n = 0; n < 1; n++) printf("%c ", get);
이걸 진행하면서 많이 검색했습니다만 마무리가 안되네요 ㅠㅠ
1. 원형을 보면 void * 를 첫번쨰 인자로 받는데
저 같은 경우는 배열을 선언하여 하는 것보단 ( 인터넷에 보면 char buf[MAXSIZE] 선언, 사이즈를 모른다는 가정하여 포인터로 해당 주소값을 바라보게 하려고 포인터 변수 선언 )
2. 2번쨰 인자로는 char 방식이여서 1씩 읽게끔 하였고 3번쨰 인자는 sizeof 로 크기를 읽어온다, 4번째는 파일 스트림
3. 제가 무엇을 놓치고 있는 걸까요 ... ?
선배님들 도움이 필요합니다...
Forums:
해결해서 다시 올립니다
우선, 두서없는 글 죄송합니다
다시 마음 잡고 천천히 살펴보고 문제 해결했습니다
코드 올립니다 ( 테스트 코드이며, 본글의 실제 코드에서는 이 글 작성 후 수정할 예정입니다 )
해결해서 다시 올립니다
우선, 두서없는 글 죄송합니다
다시 마음 잡고 천천히 살펴보고 문제 해결했습니다
코드 올립니다 ( 테스트 코드이며, 본글의 실제 코드에서는 이 글 작성 후 수정할 예정입니다 )
댓글 달기