관리 메뉴

ComputerVision Jack

[C프로그래밍 Chapter15] 본문

Programming Language/C Programming

[C프로그래밍 Chapter15]

JackYoon 2020. 2. 5. 10:19
반응형

[스트림과 데이터의 이동]

스트림

한 방향으로 흐르는 데이터의 흐름

 

프로그램을 중심으로 데이터가 들어오는 것이 입력이고 데이터가 나가는 것이 출력이다.

입출력은 데이터의 흐름을 지칭한다.

 

장치를 통해 연결되는 매체 = 스트림

입력 스트림

출력 스트림

 

콘솔 입출력 스트림은 자동으로 생성되며, 종료시 자동으로 소멸된다.

표준 스트림(standard stream)

  • stdin : 표준 입력 스트림(키보드)
  • stdout : 표준 출력 스트림(모니터)
  • stderr : 표준 에러 스트림(모니터)

[문자 단위 입출력함수]

문자 출력 함수

int putchar(int c);

int fputc(int c, FILE * stream);

#fputc함수는 문자를 전송하는 스트림을 지정할 수 있다. (파일에 쓸때)

 

문자 입력 함수

int getchar(void);

int fgetc(FILE * stream);

#fgetc함수 경우 문자를 입력 받는 스트림을 지정할 수 있다.

 

EOF 때문에 반환형이 int다.

EOF는 -1로 정의된 상수이다. 

[문자열 단위 입출력 함수]

문자열 출력 함수

int puts(const char * s);

int fputs(const char * s, FILE * stream);

#puts 함수는 개행이 이루어지지만, fputs함수는 개행 작업을 해줘야 한다.

 

문자열 입력 함수

char * gets(char * s);

char * fgets(char * s, int n, FILE * stream);

#get은 미리 배정된 배열에 저장, fput는 할당 메모리 상관없이 저장

문자열 입력 받으면 자동으로 널문자 추가된다.

[표준 입출력과 버퍼]

메모리 버퍼

표준 입출력 함수를 통해 데이터를 전달할 경우, 데이터는 운영체제가 제공하는 메모리 버퍼 중간을 통과한다.

데이터를 임시로 모아두는 메모리 공간

 

버퍼링

데이터 전송에 버퍼를 사용하는 이유는 데이터 전송의 효율성과 관련있다.

데이터를 묶어서 이동하기 때문이다.

 

int fflush(FILE * stream);

#인자로 전달된 스트림의 버퍼를 비우는 기능. 출력버퍼 비운다.

버퍼의 내용이 지워지면 데이터는 목적지로 이동한다.

 

입력 버퍼의 지워짐은 데이터의 소멸을 의미한다.

[문자열 관련 함수]

strlen(const char * s);

#문자열 길이를 반환한다. 널 문자는 포함하지 않는다.

 

char * strcpy(char * dest, const char * src);

char * strncpy(char * dest, const char * src, size_t n);

#문자열 복사하는 함수. 문자열 주소값 반환

 

char * strcat(char *dest, const  char * src);

char * strncat(char * dest, const char * src), size_t n);

#문자열 덧붙이는 함수. 추가된 문자열의 조소값 반환

 

int strcmp(const char * s1, const char * s2);

int strncmp(const char * s1, const char * s2), size_t n);

#문자열 비교함수. 같으면 0 같지 않으면 다른 값

 

int atoi(const char * str);

#문자열 내용을 int형으로 변환

 

long atol(const char * str); 

#문자열 내용을 long형으로 변환

 

double atof(const char * str);

#문자열 내용을 double형으로 변환

 

반응형

'Programming Language > C Programming' 카테고리의 다른 글

[C프로그래밍 Chapter17]  (0) 2020.02.10
[C프로그래밍 Chapter16]  (0) 2020.02.06
[C프로그래밍 Chapter14]  (0) 2020.02.04
[C프로그래밍 Chapter13]  (1) 2020.02.03
[C프로그래밍 Chapter12]  (0) 2020.02.01
Comments