Soft Ware 130

구조체 를 파일에 입력 및 출력 하기

#include #include #include typedef struct _node { int num; char name[255]; int height; }node; // 간단한 구조제 배열의 작성 int main(void) { node wr,re; // 읽고 쓰기를 위한 변수( 두개의 변수가 필요하진 않음) FILE *in,*out; //파일 입출력을 위해 파일 포인터 memset(&wr,0,sizeof(node)); memset(&re,0,sizeof(node)); // 구조체 배열의 초기화, 필요함.. wr.num=48; strcpy(wr.name,"송은남"); wr.height = 175; //구조체 변수에 간단히 입력 in=fopen("test1.txt","wt+"); //바이너리 파일로 쓰기..

fprintf 와 fscanf 사용하기 !!!

fprintf 의 매개변수는 파일 포인터 , 출력 형식 , 인자 값 예로 fprintf(f,"%d %f %s",i,d,str); 로 선언 하면 된다 ^^ 이 fprintf는 파일로 출력하는 함수이다 . fscanf의 매개변수는 파일 포인터 , 출력 형식, 인자 값의 주소 예로 fscanf(f,"%d %lf %s",&i,&d,&str); 로 선언하면 된다. 이렇게 fprintf 와 fscanf 는 파일에 공백으로 구분되어 나란히 저장된다 .

fread 와 fwrite 이용 하기 및 fgets 와 fputs 와의 차이점

fread 함수는 매개변수로 버퍼,몇 바이트씩 읽을것인지,몇개 읽을 것인지, 파일 포인터 이다. ex) #include #include int main() { FILE *Test=0,*Test2 = 0; char buffer[1000] = {0,}; char * freadData = 0; int i = 0; int count = 0; Test = fopen("book.txt","r+t"); Test2 = fopen("book2.txt","w+t"); for(;!feof(Test);) { count++; i = fread(buffer,1,1000,Test); //fgets(buffer,1000,Test); printf("실제 내용 : %d \n",i); // if(freadData == NULL) brea..

fgets / fputs 사용하기 !!!

#include #include int main() { FILE *Test=0,*Test1 = 0; char buffer[1000] = {0,}; char * freadData = 0; int i = 0; Test = fopen("book.txt","r+t"); Test1 = fopen("book1.txt","w+t"); for(;;) { freadData = fgets(buffer,1000,Test); if(freadData == NULL) break; i = fputs(buffer,Test1); } return 0; } 이 소스는 한 파일에서 읽기 쓰기 권한으로 파일을 오픈하고 다른 파일에서는 파일이 존재 하지 않으면 생성하여 읽기 쓰기로 오픈 한다. 그리고 fgets 함수를 이용하여 버퍼로 Test..

file open 과 fileclose 에 대해서

우선 file open에 대해서 알아 보겠습니다. fopen(const char * filename, const char * mode) 형식을 갖추고 있다. 리턴 값으로는 파일을 지정한 모드로 열고 입출력에 필요한 FILE 구조체를 생성한 후 그 포인터를 리턴 에러가 발생하면 NULL을 리턴 한다 . 파일 이름 같은경우 경로까지도 입력 할수 있는데 예로 C\main\main.c 이라면 입력시에는 C\\main\\main.c로 입력 해야 된다. 그이유는 역슬러쉬 문자는 문자열내에서 확장열 표시에 사용되기 때문이다 . 이젠 모드에 대해서 알아 보겠다 . mode 같은 경우에는 r = 읽기 전용으로 파일을 열고 파일이 없으면 NULL이 리턴 된다 . w = 쓰기 전용으로 파일을 열고 파일이 없으면 새로 만들고..

파일 입/출력을 공부 하기전 스트림에 대해서 !!!

스트림이란 용어부터 공부 해야 겠네요 ㅠㅠㅋㅋ 스트림이란 바이트들이 순서대로 입출력 되는 논리적인 장비를 스트림이라고 하네요 스트림은 내부에 입출력 버퍼를 가지고 있으며 이 버퍼는 스트림에 의해 자동으로 관리된다고 하네요 스트림의 현재 상태는 FILE 이라는 구조체에서 기억한다고 하네요 struct _iobuf{ chat * _ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char * _tmpfname; }; typedef struct _iobuf FILE; FILE이라는 놈이 실제이구나 !! ^____^ 여기서 잠시 CR/LF에 대해 공부 !!! CR(Carriage return) / LF (Line feed) ..

구조체 패딩에 대해 알아 보겠습니다 ㅠㅠ

패딩이란 .... 인텔 x86의 32비트 에서는 레지스터가 32비트로 이루워졌습니다 . 그래서 한번 메모리를 access 할려면 32 비트로 접근 하는게 빠르겠죠? ㅎㅎㅎ 그래서 구조체에서는 패딩이 이루워 집니다. 자 구조체를 선언해 보겠습니다. struct List { int Data ; char a; double f; int nData; double b; short c; }; 패딩이 안 이루워졌다고 전제 하에 메모리 크기는 4+1+8+4+8+2 이겠죠? 하지만 실제 메모리는 이렇게 안됩니다 . 가장 큰 비트를 기준으로 4비트씩 할당합니다 . 즉 여기서는 double 이 8비트임으로 8비트로 설정 됩니다. 4+1+(빈공간 3)+8 +4+(빈공간 4)+8+ 2 로 이런식으로 이루워집니다 ^^ 자 그럼 패..