130820.11일차

|

헤더


#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <string.h>

#include <iostream>

#include <iomanip>



메인


#include "130820.h"


/* 파일 입출력


파일 변수 FILE*변수


파일변수 = fopen("파일명 확장자","모드")

파일이 없으면 파일 변수에 NULL이 저장

모드 "r" 읽기

"w" 쓰기

"a" 추가


feof 파일변수 (end of file)

fclose 파일변수


입력

fscanf (파일변수, "변환문자", &변수, &변수, .....)


변수 = fgetc(파일변수)


fgets(문자열 변수, 개수, 파일 변수)


출력

fprintf (파일변수, "변환문자", 변수, 변수, .....)

fputc (문자변수, 파일변수)

fputs (문자열변수, 파일변수)




파일은 file에서 데이터를 읽어오는게 아니고 버퍼에서 읽어오는것임.

읽기용 버퍼, 쓰기용 버퍼를 만들어야한다.




*/


/*

void main() {

FILE * fin;

fin = fopen("data\\a.txt","r");

if ( fin == NULL ) { // 방어 코드

puts("파일을 못 읽었습니다.");

return;

}



char ch;

// 엔터, 스페이스 전부 다 입력으로 보고 읽는다.


//ch = fgetc( fin ); putchar( ch ); putchar('\n');

//ch = fgetc( fin ); putchar( ch ); putchar('\n');

//ch = fgetc( fin ); putchar( ch ); putchar('\n');

//ch = fgetc( fin ); putchar( ch ); putchar('\n');

//ch = fgetc( fin ); putchar( ch ); putchar('\n');

//ch = fgetc( fin ); putchar( ch ); putchar('\n');

//ch = fgetc( fin ); putchar( ch ); putchar('\n');



//while ( ! feof(fin) ) { // 끝이 아닐떄 돌아라

// ch = fgetc(fin); putchar( ch ); putchar('\n');

//}


}


*/




/*

void main() {


FILE * fin, * fout;

fin = fopen("data\\score.txt","r"); // fopen은 열거나 쓰거나 버퍼를 open

fout= fopen("data\\result.txt","w"); // 쓰기 버퍼는 파일이 없어도 실행가능

if ( fin == NULL || fout == NULL ) {

puts("파일을 생성할 수 없습니다.");

return;

}


char name[10];

int kor,eng,mat,tot=0;

double avg=0;

printf("이름\t국어\t영어\t수학\t총점\t평균\n"); 

fprintf(fout,"이름\t국어\t영어\t수학\t총점\t평균\n"); 

while ( fscanf( fin, "%s%d%d%d", name, &kor, &eng, & mat ) == 4 ) {

// 엔터 쳐준거 제거해줌


tot=kor+eng+mat;

avg=tot/3.;

printf("%s\t%d\t%d\t%d\t%d\t%.2lf\n",

name, kor, eng, mat, tot, avg);

fprintf(fout,"%s\t%d\t%d\t%d\t%d\t%.2lf\n",

name, kor, eng, mat, tot, avg);

// 프로그램이 끝날때 파일로 만들어진다

// 작업중에 파일로 만들고 싶을때는

// fclose해야 버퍼에서 끝냄

}

// fclose(fin);

// fclose(fout);

fcloseall();


}


*/


/*


★★★★★ 구조체 단위 입출력


open 모드 + 겸용모드

b 바이너리 파일 읽기

t 텍스트 파일 읽기. 생략 가능


ftell(파일변수) 파일 포인터의 위치 파악

fseek(파일변수, 이동바이트수, 기준)

SEEK_SET 처음

SEEK_CUR 현재위치

SEEK_END


fread (& 구조체변수, 구조체크기, 개수, 파일변수)

fwrite(& 구조체변수, 구조체크기, 개수, 파일변수)


*/



/*


struct Score

{

int kor;

int eng;

};


void main()

{

FILE * fout = fopen("data\\struct.txt","w+b");

Score m[] = { {10,20} , {30,40} , {50,60} };

Score w[4];

int size = sizeof( Score );

//fwrite( &m[0], size, 1, fout );

//fwrite( &m[1], size, 1, fout );

fwrite( &m[0], size, 1, fout );

printf("위치 : %d\n", ftell( fout ) );

fseek( fout, 0, SEEK_SET);

printf("위치 : %d\n", ftell( fout ) );


fread( &w[0], size, 1, fout);

fread( &w[1], size, 2, fout);


fseek( fout, -size, SEEK_CUR);


int i;

for ( i=0 ; i<4 ; i++)

{

printf("%d 국어 : %d\n", i, m[i].kor);

printf("%d 영어 : %d\n", i, m[i].eng);

}

}


*/




/* 입출력 Stream


#include <iostream.h>


cin >> 변수;

cout<< 변수 << endl;


setw(출력 자릿수);

setfill(채울 문자);

setprecision(출력 자릿수)

setiosflags(ios::옵션)

옵션 left

dec

oct

hex

fixed

resetiosflags(ios::옵션)


*/




/*

using namespace std;


void main()

{

int a;

//printf("정수 : ");

cout << "정수 : "; 

//scanf("%d",&a);

cin >> a;


//printf("a : %d\n",a);

cout << "a : " << a << endl;



cout << setw(10); // 10자리 비워둠

cout << setfill('#'); // 비우는 자리를 채움


cout << "a : " << a << endl;



double b=45.77;

cout << setw(10); // setfill 안주는데도 #####이 채워짐 

// 옵션 안줘도 옵션이 유지됨

cout << "b : " << b << endl;


cout << setw(10);

cout << setfill(' ');

cout << "b : " << b << endl;


cout << setw(10);

cout << setfill(' ');

cout << resetiosflags( ios::left );

cout << "b : " << b << endl;



}

*/




/*


★★★★★ 클래스 ★★★★★


멤버변수와 멤버함수의 모임

접근지정자가 필요(생략시 private로 인식)

선언시 멤버에 초기값을 줄 수 없다.

class를 메모리 할당받은 것이 객채(Object)다.



class명

{

접근지정자;

멤버 변수;

.......

접근지정자;

멤버 함수;

.......

};



접근지정자

private 멤버만 접근 가능

protected 상속받은 클래스에서만 접근 가능

public 아무나 접근가능





★ 캡슐화 (클래스의 유일한 장점) (데이터의 안정성)

★ 상속

★ 다형성


*/






/*


클래스명 class Score


기억장소 설계(멤버 변수) - 속성

char name[10]; 이름 기억용

int kor; 국어점수 기억용


관리방법 설계(멤버 함수) - 행위, 동작

setName() 이름 담기

setKor() 국어 점수 담기

getName() 이름 가져오기

getKor() 국어 점수 가져오기



*/




class Score

{


private : // 구조체는 기본이 public이다 class는 기본이 private

char name[10];

int kor;

public : // 함수는 public

void setName( char * n )

{

if ( strlen(n)+1 > 10) {

puts("네 글자까지만 입력하세요.");

strcpy(name,NULL);

} else { 

strcpy(name,n);

}

}

void setKor( int k )

{

if ( kor < 0 || kor > 100 ) {

puts("0~100 사이만 입력하세요.");

kor = 0;

} else {

kor = k;

}

}

char * getName()

{

return name;

}


int getKor()

{

return kor;

}

};


void main() 

{

Score kim; // 스택에 할당

kim.setName("홍길동");

kim.setKor(50);

printf("이름 : %s\n", kim.getName() );

printf("국어 : %d\n", kim.getKor() );

//kim.getName();

//kim.getKor();


printf("\n");


Score lee;

lee.setName("홍길동만세"); // 네글자까지만 입력하세요

lee.setKor(-50); // 0~100 사이만 입력하세요.

printf("이름 : %s\n", lee.getName() );

printf("국어 : %d\n", lee.getKor() );

//lee.getName();

//lee.getKor();

}



저작자 표시 비영리 변경 금지
신고

'Study > C, C++' 카테고리의 다른 글

130822.13일차  (0) 2013.08.22
130821.12일차  (0) 2013.08.22
130820.11일차  (0) 2013.08.22
130819.10일차  (0) 2013.08.22
130816.9일차  (0) 2013.08.19
130814.8일차  (0) 2013.08.19
Trackback 0 And Comment 0