입출력문
입출력문(input-output statement)은 외부 매체 사이의 입출력이나 관련 동작을 하는 문장이다.[1]
목차
개요
입출력문은 사용자에게 입력을 받거나 촐력할 때 쓰는 명령어이다. 입력문이 있으면 출력문도 같이 쓰게 된다. 출력문보다 입력문이 복잡해 보이지만, 입력한 값은 저장해야 프로그램 내에서 사용 가능하다. 또, 저장할 때는 변수가 필요하다. 그렇게 입력한 값의 성격에 맞는 변수명을 만들어서, 입력한 값을 저장한다. 이후 저장된 값은 변수를 통해서 접근할 수 있다.[2] 또한 컴퓨터 처리 분야에서, 컴퓨터의 5대 기능의 제어, 연산, 입력, 출력, 기억 가운데, 입력과 출력의 기능을 꺼내 입출력이라고 이름 붙인다고 여겨진다. 보통 입력 장치를 이용하고 컴퓨터에 사용자가 데이터, 정보 등을 전달하여 출력 장치를 이용하고, 컴퓨터가 사용자에게 데이터 등을 전달한다. 또, 컴퓨터끼리 정보를 제공하는 통신(컴퓨터 네트워크)도 입출력 기능에 해당한다.[3]
C언어
C언어에서는 기억장치에 저장되는 파일을 다루는 것과 마찬가지 방식으로 입출력 장치를 다룬다. 따라서 키보드, 모니터와 같은 대부분의 콘솔 장치도 C 프로그램에서는 자동으로 열리는 파일처럼 다뤄진다. C언어에서는 stdin 표준 스트림을 통해 입력 장치를 다루며, stdout 표준 스트림을 통해 출력 장치를 다룬다.[4] C언어의 대표적인 입출력문은 printf와 scanf이다. printf()는 출력, scanf()은 입력을 구성한다.
- printf() 예제 1
#include<stdio.h> int main() { printf("%7d %7d\n", 1, -1); printf("%7d %7d\n", 12, -12); printf("%7d %7d\n", 123, -123); printf("%-7d %-7d\n", 1, -1); printf("%-7d %-7d\n", 12, -12); printf("%-7d %-7d\n", 123, -123); return 0; } 결과 값 1 -1 12 -12 123 -123 1 -1 12 -12 123 -123[5]
- printf() 예제 2
#include<stdio.h> int main() { printf("%10.3f\n", 1.23456789); printf("%10.4f\n", 1.23456789); printf("%10.5f\n", 1.23456789); printf("%10.6f\n", 1.23456789); printf("%.3f\n", 1.23456789); printf("%.4f\n", 1.23456789); printf("%.5f\n", 1.23456789); return 0; } 결과값 1.235 1.2346 1.23457 1.234568 1.235 1.2346 1.23457[5]
- printf() 예제 3
#include<stdio.h> int main() { printf("10진법 : %d\n", 11); printf("8진법 : %o\n", 11); printf("16진법 : %x\n", 11); printf("소수표기 : %f\n", 0.012345); printf("지수표기 : %e\n", 0.012345); printf("지수표기 : %E\n", 0.012345); return 0; } 결과 값 10진법 : 11 8진법 : 13 16진법 : b 소수표기 : 0.012345 지수표기 : 1.234500e-02 지수표기 : 1.234500E-02[5]
- scanf() 예제
#include<stdio.h> int main() { int a, b; printf("입력 : "); scanf("%3d%3d", &a, &b); printf("%d %d\n", a, b); return 0; } 결과값 123456 123 456[5]
- scanf() 예제 2
#include<stdio.h> int main() { int dec, oct, hex; printf("입력 : "); scanf("%d %o %x", &dec, &oct, &hex); printf("%d %d %d\n", dec, oct, hex); return 0; } 결과값 10 10 10 10 8 16[5]
파이썬
input
파이썬에서는 표준 입력 함수로 input 함수를 지원한다. input()은 표준입력장치, 즉 키보드로부터 문자열을 입력받는다. input('문자열')은 문자열을 출력하고 표준입력장치로부터 문자열을 입력받는다. 그렇게 입력된 값은 문자열이다. 단, 사용자가 EOF(*nix: Ctrl-D, Windows: Ctrl-Z+Return)을 입력하면 EOFError를 발생시킨다.
- 예제
print('이름을 입력하세요', end="") name = input(); print("이름 : {0}, type : {1}".format(name,type(name))) name = input('이름을 입력하세요 '); print("이름 : {0}, type : {1}".format(name,type(name))) name = input('아무것도 입력하지 말고 EOF(Ctrl+D 또는 Ctrl+Z+Enter)를 입력해보세요'); 실행결과 이름을 입력하세요 한사람 이름 : 한사람, type : <class 'str'> 이름을 입력하세요 두사람 이름 : 두사람, type : <class 'str'> 아무것도 입력하지 말고 EOF(Ctrl+D 또는 Ctrl+Z+Enter)를 입력해보세요^D Traceback (most recent call last): File "C:/PyThonProjects/Ex01/basic03/Ex13_input1.py", line 7, in <module> name = input('아무것도 입력하지 말고 EOF(Ctrl+D 또는 Ctrl+Z+Enter)를 입력해보세요'); EOFError: EOF when reading a line[6]
파이썬에서 표준 출력 함수로 print 함수를 지원한다. 출력 시 출력 대상들의 사이에 구분자를 넣을때는 ','를 기술한다. 그리고 마지막 문자열을 출력하고 출력할 문자는 end를 쓴다. 출력 방향을 변경 할 때는 file을 기술한다. 또한 스트림을 강제적으로 flush할지 지정할 때는 flush를 기술한다.
- 예제
print("하나","둘","셋",1,2,3) print("하나","둘","셋",1,2,3,sep='-') print("첫번째 값") print("두번째 값") # 다른 줄에 출력 print("첫번째 값", end=" ---> ") print("두번째 값") # 같은 줄에 출력 # 출력 방향 변경 file = open("test.txt","w") print("Hello Python!!", file=file) # 파일로 출력 file.close() 실행 결과 하나 둘 셋 1 2 3 하나-둘-셋-1-2-3 첫번째 값 두번째 값 첫번째 값 ---> 두번째 값
마지막에 출력한 "Hello Python!!"이라는 문자열은 보이지 않는다. 하지만 "test.txt" 파일이 생성되었으며 파일의 내용으로 "Hello Python!!"이란 문자열이 저장되었음이 확인된다.
보조
보조 입출력문은 입출력문을 도와주는 것으로 3가지인 rewind, backspace, endfile문으로 나타낸다.
rewind문
rewind문은 스트림 시작 부분에 파일 포인터를 설정하는 것으로 다음과 같이 나타낸다. 여러 번의 스트림 사용 시에 유용하며 다음과 같이 나타낸다.
- 예시(C언어)
#include<stdio.h> void main() { FILE *fp; char c; fp = fopen("string-file.txt", "r"); while ((c = fgetc(fp)) != EOF) { printf("%c", c); } rewind(fp);//moves the file pointer at beginning of the file //不用重新打开文件,直接从头读取内容 while ((c = fgetc(fp)) != EOF) { printf("%c", c); } fclose(fp); } 텍스트 파일 : string-file.txt this is rewind()function from yiibai tutorials. 결과 this is rewind()function from yiibai tutorials. this is rewind()function from yiibai tutorials.
backspace문
현재 활성 위치의 라인에서 활성 위치를 한 스페이스 뒤로 옮김(키보드의 backspace 기능과 동일) 표시 : \b로 표시한다.
- 예시
#include <stdioh> int main() { char test_octal_number = '\141'; // \ooo char test_hexadecimal_number = '\x41'; // \xhh printf("%c \n",test_octal_number); // \n printf("%c \n",test_hexadecimal_number); printf("AB\bC\n"); // \b printf("T\tA\tB\n"); // \t printf("123456\r789\n"); // \r printf("\\ \' \" \n"); // \\ \' \" return 0; } 결과 a A AC T A B 789456 \ ' "[7]
endfile문
파일의 끝에 도달했을 때 언제나 특별한 값을 반환하도록 하는데, 그 값을 EOF(End Of File)라고 하며, 실제로 이 값은 -1을 나타낸다.
- 예시
#include <stdio.h> int main(void) { char ch; printf("EOF가 입력될 때까지 영문자를 계속 입력받습니다 :\n"); printf("(윈도우에서 EOF의 강제 발생은 Ctrl+Z를 누르고 나서 Enter를 누르면 됩니다)\n"); while ((ch = getchar()) != EOF) { putchar(ch); } return 0; } 실행 결과 EOF가 입력될 때까지 영문자를 계속 입력받습니다 : (윈도우에서 EOF의 강제 발생은 Ctrl+Z를 누르고 나서 Enter를 누르면 된다) a a b b -1 -1 ^Z[4]
각주
- ↑ 〈입출력문〉, 《네이버 지식백과》
- ↑ 김경미 교수, 〈입출력문 이해와 활용〉, 《한동대학교》
- ↑ 〈입출력〉, 《위키백과》
- ↑ 4.0 4.1 〈기본적인 입출력〉, 《티시피스쿨》
- ↑ 5.0 5.1 5.2 5.3 5.4 jhh0712, 〈C언어 표준 입출력〉, 《네이버 블로그》, 2019-03-22
- ↑ 〈03. Python(파이썬) 표준 입력〉, 《위키독스》
- ↑ atomic0x90 (Yujun Han), 〈이스케이프 시퀀스(escape sequence) 정리〉, 《깃허브》, 2019-05-28
참고자료
- 〈입출력문〉, 《네이버 지식백과》
- 〈입출력〉, 《위키백과》
- jhh0712, 〈C언어 표준 입출력〉, 《네이버 블로그》, 2019-03-22
- BlockDMask, 〈(python) 파이썬 파일읽기, 파일쓰기 (open , close, write, read, tell, seek)〉, 《티스토리》, 2020-12-23
- atomic0x90 (Yujun Han), 〈이스케이프 시퀀스(escape sequence) 정리〉, 《깃허브》, 2019-05-28
- 〈기본적인 입출력〉, 《티시피스쿨》
- 김경미 교수, 〈입출력문 이해와 활용〉, 《한동대학교》
- 〈03. Python(파이썬) 표준 입력〉, 《위키독스》
같이 보기