기초 - 기본 입출력

임재현·2021년 4월 24일
0

C

목록 보기
3/10

패스트 캠퍼스 - 컴퓨터 공학 전공 필수 올인원 패키지 Onlne - 03.기본 입출력

scanf()

기본적으로 취약한 함수이기 때문에 visual studio등에서 못쓰게 막고있고, 실제 프로그래밍을 할 때도 잘 쓰이지 않는다. 다만 공부목적으로 사용해보기로 한다.

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    int a;
    scanf("%d",&a);
    printf("입력한 숫자는 %d입니다.",a);
    return 0;
}

scanf()을 이용할 때 &을 이용하는 이유 : &는 특정한 변수의 주소를 의미한다. 실제로 컴퓨터는 특정한 메모리 주소에 접근하여 데이터를 수정하므로 &를 이용하는 것이다.

그렇다면 메모리 주소에 얼마만큼의 크기로 데이터를 쓸 지 결정해야 한다. 이 때 사용하는 것이 형식 지정자.

%d : 정수(10진수)

%ld : 변수형 중 long형

%c : 문자(문자 하나)

%s : 문자열("apple" 같이 여러문자)

%f : 실수(10진수, 11.34와 같이 소수점 이하에 값이 있는경우)

%lf : 변수형 중 double형(8byte)

%u : unsigned int 와 같이 부호없는 정수(10진수)

%lu : unsigned long

%x, %X, %lx, %lX : 부호없는(unsigned) 16진수

%o, %lo : 부호없는 8진수



출처: https://itng.tistory.com/40 [IT & G]

double형 데이터는 입력받을 때는 %lf를 사용하고, 출력할 때는 %f를 사용한다. 그 이유는 입력을 받을 때는 특정 주소에 특정 크기만큼 입력을 수행한다. 다만 출력할 때는 주소가 아닌 값 자체를 이용해 출력하므로 구체적인 크기를 지정하지 않아도 된다.

% 자체를 문자로 출력하고 싶을 때는 '%%'를 입력하여 출력할 수 있다.

실수형을 입력받아서 소수점 둘째 자리까지 출력하는 함수(반올림)

#include <stdio.h>

int main(int argc, const char * argv[]) {
    double a;
    scanf("%lf", &a);
    printf("%.2f\n",a);
    return 0;
}

Input = 3.666666
Output = 3.67

두 숫자를 입력받아 순서 바꾸어 출력하기

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int a,b;
    scanf("%d %d", &a, &b);
    printf("%d %d \n", b, a);
    return 0;
}

한자리씩 끊어서 입력받기

int main(int argc, const char * argv[]) {
    int a,b,c;
    scanf("%1d %1d %1d", &a, &b, &c);
    printf("%d %d %d\n", a,b,c);
    return 0;
}

Input : 567
Output : 5 6 7 (따로 따로 출력됨)

profile
임재현입니다.

0개의 댓글