C language - 2. standard I/O(표준 입출력)

1. 표준 입출력
 C언어에서 입출력 함수는 표준 입출력함수와 파일 입출력함수로 나뉩니다. 파일 입출력은 외부에서 값을 입력받거나 저장하는 반면에 표준 입력함수는 일반적으로 키보드의 입력을 받고 표준 출력함수는 일반적으로 모니터에 출력을 하게됩니다.

표준 입력함수에는 getchar(), gets(), scanf()가 있고 표준 출력함수에는 putchar(), puts(), printf()가 있습니다.




#include <stdio.h>
void main()
{
int ch;
ch = getchar(); // 키보드로 입력받아 ch에 반환
putchar(ch); // ch내용 모니터에 출력
}
view raw 1 hosted with ❤ by GitHub

위 예제를 보면 int형 변수 ch에 문자 하나를 입력받아 문자 하나를 출력하게 됩니다. 이때 왜 char형을 나두고 int형으로 받는가 하면 getchar()와 putchar()함수는 함수의 호출을 실패했거나 Ctrl + Z키가 입력을 받으면 EOF(End Of File)이라는 -1의 수를 반환하는데 char의 형태로 받게되면 char를 unsigned char로 인식하는 컴파일러도 있기 때문에 -1을 정확히 보관한다고 보장할 수 없습니다.

왜 C언어에서 가장 많이 쓰는 scanf()와 printf()를 나두고 왜 문자 하나 밖에 받지 못하는 getchar()와 putchar()를 쓰냐면 getchar()는 scanf()에 비해 훨씬 적은 메모리를 차지하는데 (putchar()와 printf()도 마찬가지) 많은 값을 원하는것도 아니고 하나의 문자를 원한다면 getchar()를 사용하여 더 효율적으로 짜기 위해서 입니다.


#include <stdio.h>

void main()
{
      char str[10];

      gets(str);  // \0(널 문자) 제외 9문자 저장
      puts(str);  // \0이 나올때 까지 출력하고 개행
}


getchar는 문자하나를 받는 반면에 gets는 문자열을 입력받게 됩니다.


위 두 예제를 보면 둘 다 #include <stdio.h>가 보이는데 이 뜻은 stdio.h(표준입출력이 들어있는 헤드파일)를 이 프로그램과 합치라는 것 입니다.


Related Posts:

  • C language - 3. file I/O(파일 입출력) 파일 입력함수에는 getc(), fgetc(), fgets(), fscanf(), fwrite()가 있고 파일 출력함수에는 putc(), fputc(), fputs(), fprintf(), fread()가 있습니다. 1. 텍스트 파일 입출력 #… Read More
  • C language - 4. string function(문자열 함수)<string.h>의 헤더파일에는 문자열과 관련되있는 함수들을 정의하고 있습니다. 1. 문자열 복사  문자열을 복사하는 함수에는 strcpy()와 strncpy()가 있습니다. strncpy() 함수에서 str3보다 1작은 크기만큼 복사해야… Read More
  • C language - 2. standard I/O(표준 입출력)1. 표준 입출력  C언어에서 입출력 함수는 표준 입출력함수와 파일 입출력함수로 나뉩니다. 파일 입출력은 외부에서 값을 입력받거나 저장하는 반면에 표준 입력함수는 일반적으로 키보드의 입력을 받고 표준 출력함수는 일반적으로 모니터에 출력을 하게됩니다. 표준… Read More
  • C language - 6. pointer(포인터)1.  메모리와 주소 컴퓨터의 메인메모리는 1byte 단위로 각각 주소가 16진수의 고정된 값이 배정되며 오른쪽 그림을 예를 들어 int(4bytes)형 변수 a를 선언 한다고 했을 때 임의의 연결된 4bytes의 공간에 int형 변수 a가 배정되게 됩니다.… Read More
  • C language - 5. array of pointer and pointer to array(포인터 배열과 배열 포인터) 1. 포인터 배열 포인터 배열은 포인터로 선언되어 주소값이 배열 형태로 저장되는 변수입니다. 아래 표와 같이 포인터 배열은 단순히 주소값을 저장하는 포이터변수가 배열처럼 나란히 붙어서 선언된것 입니다. 2. 배열 포인터 1차원의 배열을 함수의 매개변수로… Read More