본문 바로가기

app/C

자료의 입출력

**************************************************
    ★ scanf 코드 작성 시
       1. 변수명 앞에는 반드시 &연산자를 쓴다.
       2. 큰따옴표("")안에는 변환문자 이외의 어떠한 문자도 쓰지 않는다.
           단, 입력이 두 개 이상일 경우 변환문자 사이의 구분은 스페이스(띄어쓰기)로 한다.
       
    ★ 도스 창 입력 시
        1. 입력이 두 개 이상일 경우 입력 사이의 구분은 공백문자로 한다.
           여기서 공백문자란 스페이스바, 탭, 엔터를 말한다.
        2. 입력의 끝은 반드시 엔터로 한다.

    ★ 변환 문자
                    float           double
        ----------------------------------------
        입력        %f              %lf
        출력        %f              %f or %lf(둘다 가능)

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

int main()
{
    int su1, su2;
    double f1, f2;
    double av1, av2;

    printf("정수 두개 입력 : ");
    scanf("%d %d", &su1, &su2);
    av1 = (su1 + su2)/2.0; //정수 나눗셈의 결과 = 정수

    printf("실수 두개 입력 : ");
    scanf("%lf %lf", &f1, &f2);
    av2 = (f1 + f2)/2;

    printf("정수 평균 : %.2f\n", av1);
    printf("실수 평균 : %.2f\n", av2);

    return 0;
}



/***************************************************************************************
    <stdio.h>에 선언된 모든 입/출력 함수들은 스트림내에 있는 버퍼를 사용한다.
    여기서 버퍼란 임시기억장소를 말한다.
    즉, 입력되거나 출력되는 데이터는 하나씩 전송되는 것이 아니라 임시 기억장소에 저장되었다가
    한꺼번에 입/출력 되는데 이때, 데이터가 저장되는 임시 기억장소를 버퍼라 한다.

    <stdio.h>에 선언된 모든 입력 함수들은 다음과 같은 기능을 한다.
        ① 입력버퍼를 검사한다.
        ② 입력버퍼에 내용이 없으면 키보드로 부터 입력받는다.
           입력버퍼에 내용이 있으면 버퍼의 내용을 가져온다.
    즉, 무조건 키보드로 부터 입력 받는 함수가 아니기 때문에 버퍼에 내용이 남아있는 경우
    다음 입력을 받지 못하는 경우가 발생하게 된다.
    따라서, 다음 입력에 영향을 미치지 않도록 입력버퍼를 비우는 작업이 필요한데
    이를 위한 함수로 fflush를 사용한다.
   
    ♣ 입력버퍼 비우기 : fflush(stdin);
    ♣ 출력버퍼 비우기 : fflush(stdout);

***************************************************************************************/


/****************************
    정수와 문자 입력 시 정수에서 입력받은 엔터로 인해 문자 입력 불가능
*****************************/

#include <stdio.h>

int main()
{
    int a;
    char c, c2;

    printf("정수 입력 : ");
    //fflush(stdin); //입력버퍼 비우기
    scanf("%d", &a);

    printf("문자 입력 : ");
    //fflush(stdin);
    scanf("%c", &c);

    printf("문자 입력 : ");
    //fflush(stdin);
    scanf("%c", &c2);

    printf("입력 결과는 %d, %c, %c입니다.\n", a, c, c2);
    return 0;
}




/************************
    숫자는 가장 앞 공백문자(엔터, 스페이스, 탭)는 무시하기 때문에 입력 가능
*************************/

#include <stdio.h>

int main()
{
    int a;
    double d;
   
    printf("정수 입력 :");
    //fflush(stdin);
    scanf("%d", &a);
   
    printf("실수 입력 :");
    //fflush(stdin);
    scanf("%lf", &d);

    printf("입력 결과는 %d, %f입니다.\n", a, d);

    return 0;
}




/*****************   
    getchar
    - 헤더파일 : stdio.h
    - 문자(한 글자)를 입력받는 함수
    - 버퍼 사용
******************/
#include <stdio.h>

int main()
{
    char ch, ch2;
   
    printf("문자 입력 1 : ");
    fflush(stdin);
    //scanf("%c", &ch);
    ch = getchar();

    printf("문자 입력 2 : ");
    fflush(stdin);
    ch2 = getchar();

    printf("입력받은 문자는 %c, %c입니다.\n", ch, ch2);
    return 0;
}



/**********************
    putchar
    - 헤더파일 : stdio.h
    - 문자(한 글자)를 출력하는 함수
**********************/

#include <stdio.h>

int main()
{
    char ch='a';

    putchar(ch); //변수출력
    putchar('p'); //상수출력
    putchar(ch+2);
    putchar('p'+2);
    putchar('p'-2);
    putchar(65); //아스키 코드값에 해당하는 문자출력
    putchar('\n'); //제어문자출력
    putchar('\n');
   
    return 0;
}



/**********************
    puts
    - 헤더파일 : stdio.h
    - 문자열(두 글자 이상)을 출력하는 함수
    - 자동 줄바꿈 기능
***********************/

#include <stdio.h>

int main()
{
    printf("hello\n");
    puts("hello\n");
    puts(""); //줄바꿈기능 수행
    return 0;
}



//사실 가장 기본적인 scnaf도 가끔씩 까먹을때도 있다..
   잊어버려서 어떻게 사용하는지 책을 뒤적거린적도..허허..
   공백문자가 스페이스와 탭인건..오늘첨알았네;;
   역시 기초부터 튼튼히 해야겠어..


'app > C' 카테고리의 다른 글

ARtool-kit 셋팅!!  (0) 2008.12.17
openCV 셋팅!!  (0) 2008.12.15
문자열 처리 , strtok()  (2) 2008.12.14
gets() 와 scanf()의 차이점 소스  (0) 2007.09.10
싱글 링크드 리스트(학생관리편)  (1) 2007.08.29