몽상실현개발주의

[따배씨] 4.10 scanf() 함수의 사용법 본문

Language/C

[따배씨] 4.10 scanf() 함수의 사용법

migrationArc 2021. 5. 14. 10:40

[따배씨] 4.10 scanf() 함수의 사용법

따배씨 - 따라하며 배우는 C언어

4강 문자열과 형식 맞춘 입출력

4.10 scanf() 함수의 사용법

변환 지정자 Table

 

변환 지정자 수식어 Table

 

 

/* multiple inputs with blank separators */
#include <stdio.h>

int main(){
    int i;
    float f;
    char str[30];
    
    scanf("%d %f %s", &i, &f, str); // Note % is asent in fron of str
    // 123 456 hello hi

    printf("%d %f %s\n", i, f, str);
    // 123 456.000000 hello
    
    return 0;
}
  • 빈칸을 기준으로 read, 한 단어씩 입력 가능
  • over 된 입력에 대한 처리 X

 

/* character */
#include <stdio.h>

int main(){
    char c;
    scanf("%c", &c);
    printf("%i\n", c);
    // 32
    
    return 0;
}
  • 공백도 문자로 처리
    • 빈칸 하나의 SACII code = 32

 

/* Unsigned as signed */
#include <stdio.h>

int main(){
    unsigned i;
    scanf("%i", &i);
    // -123
  
    printf("%i\n", i);
    // -123
  
    return 0;
}
  • unsigned로 선언된 변수를 signed로 입력받을 시 signed로 저장됨
    • unsinged로 선언하여도 scanf를 통해 저장할때는 signed로 저장하기 때문에 가능
      • 사용하지는 말자!

 

 

/* Unsigned as unsigned */
#include <stdio.h>

int main(){
    unsigned i;
    scanf("%u", &i);
    // -1024
  
    printf("%u\n", i);
    // 4294966272
    
    return 0;
}
  • unsinged로 선언된 변수를 unsigned 형태로 입력 받았기 때문에 정상출력 X

 

 

/* floating point numbers */
#include <stdio.h>

int main(){
    double d1 = 0.0;
    double d2 = 0.0;
    float d3 = 0.0;
  
    scanf("%lf", &d1);
    scanf("%f", &d2);
    scanf("%f", &d3);
    printf("%f %f %f\n", d1, d2, d3);
    // 3.140000 0.000000 3.140000
    
    return 0;
}
  • 8byte double 형을 4byte float으로 입력받았기 때문에 size가 맞지 않아 정상입력 X

 

 

/* Width */
#include <stdio.h>

int main(){
    char str[30];
    scanf("%5s", str);
    // abcde
    printf("%s\n", str);
    // abcd
    return 0;
}
  • %5s : 5글자 까지만 입력받음

 

 

/* h modifier */
#include <stdio.h>

int main(){
    char i1, i2;
    scanf("%hhd %hhd", &i1, &i2);
    // 1 246
    
    printf("%i %i\n", i1, i2);
    // 1 0
    
    return 0;
}

 

 

/* integer with characters */
#include <stdio.h>

int main(){
    int i;
    scanf("%i", &i);
    // 123ab456
    
    printf("%i\n", i);
    // 123
    
    return 0;
}
  • int형 입력 중 문자를 만나면 scanf 함수가 중지
    • 입력받은 숫자만 저장

 

 

/* j modifier */
#include <stdio.h>

int main(){

    intmax_t i;	// long long type
    
    scanf("%ji", &i);
    printf("%ji", i);
    
    return 0;
}

 

 

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments