어쿠....
제가 진행하는 프로잭트는 거의 Win32프로젝트 입니다.
닷넷환경에 익숙한 저한테는 너무 가혹한 ㅜㅡ
어찌됬건 MFC조차 사용하면 안되는 환경에서 코딩을 하다보니 MFC로 된 자료를 보면 혈압이 올라서 정리해 둡니다.
.txt 파일을 읽고쓰는건 기초중에 기초라고 할수 있는데도 불구하고 MFC자료만-_-;;;
|
1. 기본 쓰기 읽기 |
#include "stdafx.h" #include#include #include void LoadFile() { //*.txt에 쓰기 FILE *fp; fp = fopen("test.txt","wt"); fwrite("sddfsfasd", sizeof(char[10]), 1, fp); fclose(fp); //*.txt를 읽기 FILE *fp; int i = 0; fp = fopen("test.txt", "rt"); char a[10]; while( !feof(fp) ) { i = i + 1; fread(&a,sizeof(char[10]),1,fp); printf("%s",a); MessageBox(NULL,a ,0,0); } fclose(fp); }
|
2. 구조체 사용 |
#include "stdafx.h" #include#include #include typedef struct test { char name[10]; char number[20]; test *link; }test_Node; test_Node T,S; test_Node *TEST; void LoadFile() { int i = 0; TEST = (test_Node *)malloc(sizeof(test_Node)); FILE *fp; fp = fopen("test.txt", "wt"); strcpy(TEST->name, "aaaa"); strcpy(TEST->number, "200-2000"); fwrite(TEST, sizeof(test_Node), 1, fp); strcpy(TEST->name, "bbbb"); strcpy(TEST->number, "200-2000"); fwrite(TEST, sizeof(test_Node), 1, fp); fclose( fp ); printf("저장한 내용=> %s,%s\n\n", TEST->name, TEST->number); fp=fopen("test.txt", "rt"); while( !feof(fp) ) { i = i + 1; fread(&S, sizeof(test_Node), 1, fp); printf("%d번째 실행=>> %s, %s\n" , i, S.name, S.number); } printf("\n\n실행횟수==>%d\n", i); fclose(fp); }
|
3. 한줄씩 읽기 |
void LoadFile() { int i = 0; FILE *fp; fp = fopen("Target.txt","rt"); while(fgets(strTemp, 513,fp)!=NULL) { ++i; sprintf( tmp, "%s", strTemp ); MessageBox(NULL,tmp ,0,0); } fclose(fp); }
|
4. 파일 읽기 함수를 통한 구조체 전달 |
//파일 불러오기 구조체 typedef struct tTest { char *strTest; int intTest; } typeTest; void LoadFile(char* strDir, typeTest *testTemp) { //파일을 읽어들인다. FILE *fp; fp = fopen( strDir, "rt"); char strTempText[2048]; fread( &strTempText, sizeof(char[2048]), 1, fp); testTemp->intTest = _filelength(_fileno(fp)); fclose(fp); testTemp->strTest = new char[testTemp->intTest ]; testTemp->strTest = (char*)malloc( testTemp->intTest + 1); memset(testTemp->strTest , 0, sizeof(char) * (testTemp->intTest + 1)); for( int i = 0 ; i < testTemp->intTest ; ++i) { testTemp->strTest[i] = strTempText[i]; } }
//파일데이터 typeTest testFileData; //직급 변환 LoadFile("Class.txt", &testFileData); sprintf( strTemp, "%s", testFileData.strTest);
|
5. 파일을 읽어 구분자 분리후 저장 |
p.s. 텍스트의 빈곳에 쓰레기 값이 들어간다면
memset( strTemp, 0x00, sizeof(strTemp));
요렇게 해서 먼저 초기화를 시킨후 사용하자!