C언어 입출력 함수

김지원·2023년 3월 3일

C언어(독학사)

목록 보기
2/7

입출력 함수

표준 입출력

: 입출력 함수를 이용하여 키보드를 통해 데이터를 입력받고 그 처리 결과를 모니터에 출력한다.

  • 이런 과정을 처리하기 위해 사용되는 입출력 함수들은 <stdio.h> 라는 헤더 파일에 정의 되어 있다.

표준 출력 함수

printf()

: 다양한 자료형의 데이터들을 화면에 출력하기 위해 사용하는 함수

1) 특정 문자열의 출력

  • 출력하고 싶은 문자열을 이중인용부호 " " 로 묶어주면 그 안의 문자열이 그대로 화면에 출력된다.
printf("안녕하세요");

2) 표준 출력 형식 지정문자를 이용한 출력

만약 다음과 같이 출력한다고 했을 때
printf("100"); 
→ 이것은 산술적인 100(백)이 아니라 문자의 의미를 가진 100(일영영)으로 출력이 된다.

따라서 printf() 함수를 이용해 숫자를 출력하고 싶으면 출력하고자 하는 숫자의 자료형과 일치하는 형식 지정 문자를 이용해야 한다.

printf("표준 출력 형식 지정문자", 변수 또는 실제 값);
printf("%d", 100); 

  • ❗️표준 출력 형식 지정문자의 수와 출력하고자 하는 변수 또는 값의 수가 일치하지 않은 경우 오류 발생.
  • 대응시킬 변수 또는 값이 없다면 예상치 못한 값(쓰레기값 : garbage)로 출력 된다.
printf("정수 : %d, 쓰레기값 : %f", 100); // 정수 : 100, 쓰레기값 : 0.000000

3) 자릿수 지정 출력

  • printf() 형식 지정 문자를 이용하여 출력하는 경우 자릿수를 확보해 정렬하거나 정밀도를 조정할 수 있고 플래그(flag) 필드값도 변경해서 출력할 수 있다.
#include<stdio.h>
int main(void) {
    printf("정수 자릿수 지정 출력\n");
    printf("|%d|\n", 1234);
    printf("|%6d|\n", 1234);
    printf("|%-10d|\n", 1234);
    printf("|%06d|\n", 1234);
    printf("|%-+6d|\n", 1234);
    printf("소수 자릿수 지정 출력\n");
    printf("|%f|\n", 12.345);
    printf("|%6f|\n", 12.345);
    printf("|%6.1f|\n", 12.345);
    printf("|%06.2f|\n", 12.345);
}

putchar() / puts()

: printf()로 문자와 문자열을 출력할 수 있지만 putchar() puts() 을 사용하면 형식 지정 문자를 사용하지 않고 빠르고 편리하게 출력가능하다.

putchar('A');
puts("Hello world");

표준 입력 함수

scanf()

: 다양한 자료형의 데이터들을 입력받기 위해 사용하는 함수.

1) 표준 출력 형식 지정문자를 이용한 출력

  • 데이터의 자료형에 알맞은 표준 입력 형식 지정문자를 이용한다.
scanf("표준 입력 형식 지정문자", &변수명);
scanf("%d",&Age);


❗️ scanf() 함수를 이용하여 키보드로 입력받은 값은 메모리에 저장되어야 하는데 값을 메모리에 저장하기 위해서는 저장할 변수의 주소를 알아야한다. 그렇기 때문에 C언어에서 변수의 메모리 주소를 알려주는 연산자 &을 변수명 앞에 반드시 붙여줘야한다.

2) scanf() 함수를 이용하여 한 문자 입력

  • scanf 함수가 발생시킨 커서에서 사용자가 정수를 입력하면 & 연산자를 통해 알아낸 변수 Age의 주소에 접근해 입력받은 정수를 저장하는 형태이다.
  • 이때 형식 지정 문자 이후에 공백 또는 escape 문자를 사용하면 데이터 입력 후에도 커서가 다른 입력을 기다리게 되므로 주의해야한다.
#include<stdio.h>
int main(void) {
    int Age;
    printf("나이를 입력해주세요 : ");
    scanf("%d", &Age);
    printf("입력하신 나이는 %d 입니다.\n", Age);
}
// 나이를 입력해주세요 : 29
// 입력하신 나이는 29 입니다.
scanf("%d\n", &Age); // escape 문자 사용시
// 나이를 입력해주세요 : 29
// 3 → \n 으로 인해 다음 입력을 기다림으로 커서를 발생시킨다. 다른 데이터를 입력해야 scanf 함수의 사용이 끝난다.
// 입력하신 나이는 29 입니다.

%c 을 이용할 때 주의점
%c 를 이용해 char형 데이터를 입력받을 때는 입력 버퍼에 있는 엔터키까지 받아들이기 때문에 ffluch(stadin); 코드를 삽입해 입력 버퍼에 남겨진 모든 내용을 삭제해줘야한다.
아니면 getchar() 을 이용해 char형 데이터를 입력 받아야 한다.

  • "등급을 입력해주세요 : " 문장 후 이미 Grade에 enter의 값이 저장되어있어서 커서를 발생시키지 않는 것이다.

3) scanf() 함수를 이용하여 여러 문자 입력

  • 여러 문자를 입력 받기 위해서는 입력 형식 지정문자 수 = 저장할 변수 수 이 두개가 같아야하며, 자료형 도 주의를 해주어야한다.
  • 입력받는 문자들은 공백, 탭, 엔터로 구분할 수 있고 입력형식 지정문자 사이에 특정 문자를 넣어줬다면 입력 시에도 해당 문자로 구분해주어야한다. 똑같이 하지 않으면 다른 값이 튀어나온다.

getchar() / gets()

: scanf()로 문자와 문자열을 출력할 수 있지만 getchar() gets() 을 사용하면 형식 지정 문자를 사용하지 않고 빠르고 편리하게 입력가능하다.

0개의 댓글