윤성우 열혈 C 24장 간단 정리
파일 입출력
-
입/출력에 대해 설명하라
프로그램과 외부 데이터 사이에 데이터가 흘러갈 수 있도록 만든 브릿지. 단 방향으로 흘러감. 운영체제에서 제공함. 프로그램을 중심으로 입력이란 프로그램 안으로 데이터가 플러오는 것, 출력이란 프로그램 밖으로 데이터가 흘러 나가는 것. 입출력 대상은 매우 넓음
-
스트림에 대해 설명하라 (정의, 방향, 제공되는 곳)
프로그램과 입출력 대상의 데이터 흐름을 연결시켜주는 다리. 데이터는 항상 단방향으로 흐름. 운영체제에서 제공하는 소프트웨어적으로 구현된 가상의 다리.
-
스트림의 생성과 소멸에 대해 설명하라
스트림이 생성/제거가 되는 것을 말 함. 프로그램의 실행에 의해 자동적으로 생성되거나 프로그램에서 명시적으로 생성/제거 가능
-
표준 스트림에 대해 설명하라
프로그램 실행/종료 에 따라 자동으로 생성/소멸되는 스트림을 말함. stdin, stout, sterr 가 있음 stdin 은 콘솔을 이용한 입력 스트림, stout 는 모니터를 이용한 출력 스트림, sterr 는 모니터를 이용한 에러 스트림을 말함.
-
문자 출력 함수에 대해 설명하라
문자를 출력하는 함수. putchar 는 전달된 문자정보를 stdout 으로 출력, fputc 는 문자를 전송할 스트림 지정. int 형 변수에 저장됨
-
문자 입력 함수에 대해 설명하라
문자를 입력하는 함수. getchar 는 stdin 으로 하나의 문자를 입력 받아 반환하는 함수. fgetc 는 입력 받은 스트림을 지정해서 하나의 문자를 입력 받는 함수. int 형 변수에 저장됨.
-
문자 입출력에서 EOF 에 대해 설명하라
파일의 끝을 표현하기 위해서 정의해 놓은 상수. 입력을 종료시키거나 함수 호출 실패 시 반환됨.
-
문자 입출력 함수의 반환형이 int 이고 int 형 변수에 문자를 담은 이유를 설명하라
char 의 경우 컴파일러에 따라 unsigned 일 수 있고 EOF 는 -1로 정의된 상수이기 때문에 EOF 가 char 에 저장될 경우 양의 정수로 변환이 되어 문제가 생기기 때문.
-
문자 단위 입출력 함수의 존재 이유에 대해 설명하라
printf, scanf 는 여러 기능을 제공하는 망큼 메모리 공간이 크고 해야 할 연의 양이 많아서 상대적으로 느리기 때문. 별도의 서식 지정도 번거로운 편.
-
문자열 출력 함수에 대해 설명하라
문자열을 출력하는 함수. puts 는 stdout 으로 출력하며 자동 개행 이루어짐, fputs 는 출력 대상 결정 가능하며 자동 개행 이루어지지 않음
-
문자열 입력 함수에 대해 설명하라
문자열을 입력하는 함수. gets 는 stdin 으로부터 문자열 입력받으며 입력받은 문자열이 마련해 놓은 배열을 넘어서는 길이의 문자열이면 할당 받지 않은 메모리 공간 침범하여 오류 발생함. fgets 는 입력 받는 스트림을 지정해서 배열에 저장하돼 특정 길이만큼만 저장하며 자동으로 널 문자가 추가되며 입력된 문자열의 길이가 배열의 길이 넘을 경우 버퍼에 저장해놓고 다시 호출되면 버퍼에 저장된 문자열 추가로 읽으며 문자열 입력 시 친 엔터 키의 정보(개행 문자)까지 문자열의 일부로 읽음.
-
표준 입출력 함수에 대해 설명하라
ANSI C 표준에서 정의된 함수.
-
메모리 버퍼에 대해 설명하라
데이터를 임시로 모아두는 메모리 공간. 표준 입출력 함수들의 데이터가 잠시 저장되는 장소.
-
버퍼링 하는 이유에 대해 설명하라
데이터 전송의 효율성을 높이기 위해. 데이터 하나하나를 보내면 비효율적이기 때문에 한꺼번에 모았다가 보내기 위해 사용됨.
-
출력 버퍼가 비워지는 것에 대해 설명하라.
출력 버퍼에 저장된 데이터가 버퍼를 떠나 목적지로 이동되는 것을 뜻함. 비워지는 시점은 시스템에 따라, 버퍼의 성격에 다라 달라짐.
-
fflush 함수에 대해 설명하라
출력 버퍼를 비우는 역할을 함.
-
입력 버퍼를 비우는 것에 대해 설명하라.
입력 버퍼에 저장된 데이터의 소멸을 의미. 입력된 스트림의 출력 버퍼를 비우는 역할을 함. 입력 함수에 따라 버퍼에 데이터를 남겨서 프로그램 실행에 방해를 하는 경우가 있기 때문에 사용함.while (getchar() ! = ‘\n’); 로 하며 \n 을 만날 때 까지 문자를 읽어 들이면 지워짐.
-
문자열의 길이를 반환하는 함수에 대해 설명하라
문자열의 길이를 측정하는 함수. strlen 함수가 역할을 함. size_t 형(unsigned int)이지만 int 형에 저장 가능 fgets 의 \n 을 지우는 용도로도 사용됨.
-
문자열을 복사하는 함수들에 대해 설명하라
문자열을 복사해서 대상 변수에 붙여넣는 함수. strcpy 는 문자열을 복사하며 배열의 길이가 문자열의 길이보다 작지 않도록 주의해야 함. strncpy 는 문자열을 저장하돼 길이가 길다면 해당하는 문자의 수 만큼만 복사를 진행하며 널 문자는 포함하지 않기 때문에 배열의 끝에 널 문자 삽입해야 함.
-
문자열을 덧붙이는 함수들에 대해 설명하라
문자열의 뒤에 다른 문자열을 복사하는 기능 제공. strcat 은 덧붙임이 시작되는 위치는 널 문자가 아닌 널 문자가 저장된 위치에서 부터. strncat 은 최대 n 개를 덧붙이며 널 문자 자동으로 삽입됨.
-
문자열을 비교하는 함수들에 대해 설명하라
문자열을 비교하여 일치하는지 아닌지 출력하는 함수. 일치할 시 0 출력, 일치하지 않을 경우 1이나 -1 출력. 단순히 배열 이름을 비교할 경우 메모리 주소값을 비교하기 때문에 사용됨. 첫 번째 문자부터 비교하며 문자의 ascii 코드로 비교함. strcmp 는 두 문자열을 통째로 비교하며 strncmp 는 두 문자열을 전달된 수의 크기만큼 비교함
-
헤더파일 stdlib.h 에 선언된 함수들에 대해 설명하라
문자열의 내용을 원하는 데이터 형으로 변환하는 데 사용함.