2015년 7월 14일 화요일

20150715 스트림과 데이터의 이동

스트림은 입출력시 데이터가 크기가 정해지지 않은것

★스트림의 생성과 소멸
콘솔 입출력을 위한 '입력 스트림'과 '출력 스트림'은 프로그램이 실행되면 자동으로
생성되고, 프로그램이 종료되면 자동으로 소멸되는 스트림이다.

putchar<-문자를 1개씩 출력할때 사용(보통 \n을 많이사용)
fputc<-stdin, stderr등이 합쳐져 있는것을 분리해서 사용가능
putchar('\n') 따옴표는 1글자를 의미
getchar<-문자를 1개씩 입력할때 사용
fgetc<-

fprintf<-fputc처럼 파일출력위치 지정가능

ch1=getchar(); //문자 입력 - 키보드를 읽어와 ch1에 아스키코드값 저장
ch2=fgetc(stdin); // 엔터 키 입력

gets는 보안에 취약해서 가급적 쓰지 않는게 좋다!
fgets(str, sizeof(str), stdin); // stdin으로부터 문자열을 입력 받아서 배열 str에 저장하되,
sizeof(str)의 길이만큼만 저장해라!

버퍼는 메모리에 저장되는 공간(윈도우에선? 큐)
예=scanf로 입력을 받을시 엔터를 치기전에 저장되어 있는것 엔터를 치지 않으면 화면에
표시된 문자나 숫자는 어딘가에 저장되어있다!

버퍼링을 하는 이유는 데이터의 전송 효율성 즉 일을 여러번 나누어서 하는것보다
한번에 하는것이 빠르고 효율적이기 때문에

File - stdout 모니터 1번
- stdin 0번
- stderr 에러 2번
- 일반

stderr은 예전엔 프린터로(dot방식 프린터시절) 에러를 모두 출력햇으나
Log파일로 기록되도록 바뀌었다가 요즘엔 선택?

(리 디렉션)실행파일이름뒤에 >을 붙이면 사용예
도스
dir > a.txt // 1번 실행시 파일이 없으면 생성되어 아래의 내용이 저장된다!
 D 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 2A6A-5E9A

 D:\C\20150715\p420 디렉터리

2015-07-15  오전 09:53    <DIR>          .
2015-07-15  오전 09:53    <DIR>          ..
2015-07-15  오전 10:26                 0 a.txt
2015-07-15  오전 09:32               214 main.c
2015-07-15  오전 09:32            72,192 main.exe
2015-07-15  오전 09:32               710 main.obj
               4개 파일              73,116 바이트
               2개 디렉터리  229,105,537,024 바이트 남음

cl > a.txt // 1번 stdout - 실행시 아래의 내용저장
usage: cl [ option... ] filename... [ /link linkoption... ]
cl 2> a.txt // 2번 stderr - 실행시 아래의 내용저장
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

fgetc(stdin) // f get c (stdin)==f는 sdtin이고 stdin은 File라고 볼수있다!

댓글 없음:

댓글 쓰기