본문 바로가기
GD's IT Lectures : 기초부터 시리즈/C, C++ 기초부터 ~

[C/C++ 프로그래밍] 2. 출력문과 입력문

by GDNGY 2023. 5. 15.

Chapter 2. 출력문과 입력문

이번 장에서는 C/C++에서 가장 기본적인 작업 중 하나인 출력문과 입력문에 대해 배워볼 것입니다. 출력문과 입력문의 필요성과 사용법, 그리고 printf와 cout, scanf와 cin을 사용하는 방법 등에 대해 자세히 알아보겠습니다. 또한, 형식 지정자의 이해와 사용자 입력의 처리 방법에 대해서도 배워보도록 하겠습니다.

 


 

반응형

 


[Chapter 2. 출력문과 입력문]

 

2.1. 출력문의 이해와 사용

2.1.1. 출력문의 필요성 이해

2.1.2. printf 함수를 이용한 출력

2.1.3. cout 객체를 이용한 출력

 

2.2. 형식 지정자의 이해

2.2.1. 형식 지정자의 정의

2.2.2. 다양한 형식 지정자와 그 용도

 

2.3. 입력문의 이해와 사용

2.3.1. 입력문의 필요성 이해

2.3.2. scanf 함수를 이용한 입력

2.3.3. cin 객체를 이용한 입력

 

2.4. 사용자의 입력 처리

2.4.1. 입력받은 데이터의 활용 방법

2.4.2. 사용자 입력의 오류 처리 방법

 

 


 

2.1. 출력문의 이해와 사용

프로그래밍을 배우는 초보자라면, 작성한 프로그램이 어떤 결과를 출력하는지 보는 것은 매우 중요합니다. 이를 위해 우리는 출력문을 사용합니다. 출력문은 프로그램의 결과를 사용자에게 보여주는 역할을 합니다. 복잡한 계산의 결과나, 특정 조건에 따른 메시지 등, 우리가 원하는 모든 것을 화면에 표시할 수 있습니다.

 

2.1.1. 출력문의 필요성 이해

출력문 없이 프로그래밍을 상상해 보세요. 우리가 작성한 코드가 정상적으로 작동하는지 아닌지를 판단하기 어려울 것입니다. 출력문은 코드의 결과를 확인하고, 디버깅하는 데 있어 필수적인 도구입니다.

 

2.1.2. printf 함수를 이용한 출력

C 프로그래밍에서는 printf 함수를 통해 출력을 수행합니다. 가장 기본적인 사용법은 문자열을 출력하는 것입니다.

 

[예제]

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

 

이 코드는 "Hello, World!"라는 문자열을 콘솔에 출력합니다. \n은 줄 바꿈 문자로, 이 문자가 있으면 출력 후 커서를 다음 줄로 이동합니다.

 

하지만 printf 함수는 그저 문자열을 출력하는 것 뿐만 아니라 다양한 형식 지정자를 사용하여 여러 가지 데이터 타입을 출력할 수 있습니다. 예를 들어, 정수를 출력하려면 %d를, 실수를 출력하려면 %f를 사용합니다.

 

 [예제]

#include <stdio.h>

int main() {
    int number = 10;
    float pi = 3.1415;

    printf("The number is %d\n", number);
    printf("Pi is approximately %f\n", pi);

    return 0;
}

 

위 코드에서 %d와 %f는 각각 정수와 실수를 출력하기 위한 형식 지정자입니다. printf 함수의 두 번째 인자부터는 각 형식 지정자에 매칭되는 변수를 순서대로 넣어주면 됩니다.

 

2.1.3. cout 객체를 이용한 출력

C++에서는 cout 객체를 사용하여 다양한 데이터 타입을 출력할 수 있습니다. 이를 위해 << 연산자를 사용하여 출력하려는 데이터를 cout에 연결합니다.

 

[예제]

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

 

이 코드는 "Hello, World!"라는 문자열을 콘솔에 출력합니다. std::endl은 줄 바꿈을 의미하며, 이를 사용하면 출력 후 커서를 다음 줄로 이동합니다.

 

[예제]

#include <iostream>

int main() {
    int number = 10;
    float pi = 3.1415;

    std::cout << "The number is " << number << std::endl;
    std::cout << "Pi is approximately " << pi << std::endl;

    return 0;
}

 

std::cout << "The number is " << number << std::endl;와 같은 표현은 "The number is ", number 변수의 값, 그리고 줄 바꿈을 순서대로 화면에 출력하라는 명령입니다.


2.2. 형식 지정자의 이해

C/C++에서는 형식 지정자라는 도구를 사용하여, 다양한 데이터 타입을 출력하거나 입력받습니다. 형식 지정자는 이들 언어의 핵심적인 요소 중 하나이며, 이를 이해하는 것은 초보자에게 매우 중요합니다.

2.2.1. 형식 지정자의 정의

프로그래밍에서 형식 지정자(format specifier)란 데이터의 종류(정수, 실수, 문자 등)를 지정하는데 사용되는 특별한 문자열입니다. 형식 지정자는 주로 출력문이나 입력문에서 사용됩니다.

 

C/C++에서 가장 흔하게 사용되는 형식 지정자는 %d(정수), %f(부동소수점 숫자), %c(문자), %s(문자열) 등이 있습니다. 이 외에도 다양한 형식 지정자들이 있으며, 각각은 특정 데이터 타입을 출력하거나 입력하는 데 사용됩니다.

 

2.2.2. 다양한 형식 지정자와 그 용도

C/C++에서는 다양한 형식 지정자들이 있습니다. 여기서는 가장 흔히 사용되는 몇 가지를 살펴보겠습니다.

  • %d: int 형식의 정수를 출력하거나 입력하는 데 사용됩니다.
  • %ld: long int 형식의 정수를 출력하거나 입력하는 데 사용됩니다.
  • %f: float 형식의 부동소수점 숫자를 출력하거나 입력하는 데 사용됩니다.
  • %lf: double 형식의 부동소수점 숫자를 출력하거나 입력하는 데 사용됩니다.
  • %c: char 형식의 문자를 출력하거나 입력하는 데 사용됩니다.
  • %s: char 배열 형식의 문자열을 출력하거나 입력하는 데 사용됩니다.

이러한 형식 지정자들은 printf 함수와 scanf 함수에서 매우 중요하게 사용됩니다. printf 함수는 형식 지정자를 이용하여 변수의 값을 출력하고, scanf 함수는 형식 지정자를 이용하여 사용자의 입력을 적절한 데이터 타입의 변수에 저장합니다.

 

다음의 코드는 printf와 scanf 함수에서 다양한 형식 지정자를 어떻게 사용하는지를 보여줍니다.

 

[예제]

#include <stdio.h>

int main() {
    int number;
    long int bigNumber;
    float pi;
    double bigPi;
    char letter;
    char hello[50];

    printf("Enter an integer: ");
    scanf("%d", &number);

    printf("Enter a long integer: ");
    scanf("%ld", &bigNumber);

    printf("Enter a float: ");
    scanf("%f", &pi);

    printf("Enter a double: ");
    scanf("%lf", &bigPi);

    printf("Enter a character: ");
    scanf(" %c", &letter); // 공백은 이전의 입력에서 남아있는 줄바꿈 문자를 무시합니다.

    printf("Enter a word: ");
    scanf("%s", hello); // 문자열은 주소이므로 '&'가 필요하지 않습니다.

    printf("You entered: %d, %ld, %f, %lf, %c, %s\n", number, bigNumber, pi, bigPi, letter, hello);
    return 0;
}

 

이 코드를 실행하면 각각의 프롬프트에 따라 값을 입력할 수 있습니다. 그리고 마지막에 입력한 값들을 모두 출력해 줍니다.

 

참고로 scanf에서 문자를 입력받을 때, 이전의 입력에서 남아있는 줄 바꿈 문자를 무시하기 위해 형식 지정자 앞에 공백을 두는 것이 일반적입니다. 그리고 문자열은 이미 주소를 나타내는 포인터이므로, scanf에서는 '&'가 필요하지 않습니다.


2.3. 입력문의 이해와 사용

컴퓨터 프로그래밍에서 가장 중요한 요소 중 하나는 사용자로부터 정보를 수집하는 것입니다. 사용자로부터 정보를 입력받는 것은 애플리케이션의 인터랙티브한 요소를 제공하며, 데이터를 처리하고 결과를 반환하는데 필요한 동적인 요소를 추가합니다. C와 C++ 언어에서는 이를 수행하기 위해 scanf 함수와 cin 객체를 사용합니다.

2.3.1. 입력문의 필요성 이해

우리가 사용하는 대부분의 유용한 프로그램들은 사용자로부터 데이터를 입력받아 작업을 수행합니다. 예를 들어, 온라인 쇼핑 사이트에서는 사용자로부터 주문 정보를 입력받고, 그에 따라 주문을 처리합니다. 사용자의 입력은 프로그램에 동적인 특성을 부여하며, 프로그램이 보다 유용하고 효과적인 도구가 될 수 있게 합니다. 따라서 입력문의 사용과 이해는 프로그래밍에서 중요한 핵심 요소입니다.

 

2.3.2. scanf 함수를 이용한 입력

C 언어에서 사용자로부터 입력을 받기 위해 scanf 함수를 사용합니다. scanf 함수는 입력 스트림에서 데이터를 읽고, 지정된 형식에 따라 변수에 저장합니다.

 

다음은 scanf 함수를 사용하여 정수, 실수, 문자 및 문자열을 입력받는 기본적인 예시입니다.

 

[예제]

#include <stdio.h>

int main() {
    int i;
    float f;
    char c;
    char str[20];

    printf("Enter an integer: ");
    scanf("%d", &i);

    printf("Enter a float: ");
    scanf("%f", &f);

    printf("Enter a character: ");
    scanf(" %c", &c);  // 공백이 있음에 주목하세요. 이는 이전 입력에서 남은 줄바꿈 문자를 무시합니다.

    printf("Enter a string: ");
    scanf("%s", str);

    printf("You entered: %d, %f, %c, %s\n", i, f, c, str);
    return 0;
}

 

2.3.3. cin 객체를 이용한 입력

C++에서는 cin 객체를 사용하여 사용자로부터 입력을 받습니다. cin 객체는 입력 스트림에서 데이터를 읽고 지정된 변수에 저장합니다.

 

다음은 cin 객체를 사용하여 정수, 실수, 문자 및 문자열을 입력받는 기본적인 예시입니다.

 

[예제]

#include <iostream>
#include <string>

int main() {
    int i;
    float f;
    char c;
    std::string str;

    std::cout << "Enter an integer: ";
    std::cin >> i;

    std::cout << "Enter a float: ";
    std::cin >> f;

    std::cout << "Enter a character: ";
    std::cin >> c;

    std::cout << "Enter a string: ";
    std::cin >> str;

    std::cout << "You entered: " << i << ", " << f << ", " << c << ", " << str << "\n";
    return 0;
}

2.4. 사용자의 입력 처리

사용자 입력은 프로그램에게 중요한 데이터를 제공하는 방법입니다. 그러나 입력을 단순히 받아들이는 것만으로는 충분하지 않습니다. 입력받은 데이터를 어떻게 사용할지 결정하고, 잘못된 입력을 처리하는 방법을 알아야 합니다.

 

2.4.1. 입력 받은 데이터의 활용 방법

사용자로부터 입력받은 데이터는 다양한 방식으로 활용될 수 있습니다. 예를 들어, 입력값을 변수에 저장하거나, 계산에 사용하거나, 조건문에서 비교하는 데 사용할 수 있습니다.

 

다음은 C와 C++에서 사용자 입력을 변수에 저장하고 활용하는 방법을 보여주는 예시입니다.

 

[예제]

// C 언어 예제
#include <stdio.h>

int main() {
    int number;

    printf("Enter a number: ");
    scanf("%d", &number);

    printf("You entered: %d\n", number);
    printf("The double of your number is: %d\n", number * 2);

    return 0;
}
// C++ 예제
#include <iostream>

int main() {
    int number;

    std::cout << "Enter a number: ";
    std::cin >> number;

    std::cout << "You entered: " << number << "\n";
    std::cout << "The double of your number is: " << number * 2 << "\n";

    return 0;
}

 

2.4.2. 사용자 입력의 오류 처리 방법

사용자 입력은 항상 완벽하다고 가정할 수 없습니다. 사용자는 예상치 못한 입력을 할 수 있으며, 이를 처리하지 않으면 프로그램에 문제가 발생할 수 있습니다. 따라서 입력에 대한 오류 처리는 필수적입니다.

 

C와 C++에서는 입력의 유효성을 검사하고, 오류를 처리하는 여러 가지 방법이 있습니다. 다음은 잘못된 입력을 처리하는 기본적인 예시입니다.

 

[예제]

// C 언어 예제
#include <stdio.h>

int main() {
    int number;
    int ret;

    printf("Enter a number: ");
    ret = scanf("%d", &number);

    if (ret != 1) {
        printf("Invalid input!\n");
        return 1;
    }

    printf("You entered: %d\n", number);

    return 0;
}
// C++ 예제
#include <iostream>

int main() {
    int number;

    std::cout << "Enter a number: ";
    std::cin >> number;

    if (std::cin.fail()) {
        std::cout << "Invalid input!\n";
        return 1;
    }

    std::cout << "You entered: " << number << "\n";

    return 0;
}

 

 

 

2023.05.15 - [GD's IT Lectures : 기초부터 시리즈/C, C++ 기초부터 ~] - [C/C++ 프로그래밍] 1. 개발 환경 설정

 

[C/C++ 프로그래밍] 1. 개발 환경 설정

Chapter 1. C/C++ 개발 환경 설정 이 장에서는 C/C++ 개발에 필요한 기본적인 환경 설정에 대해 알아볼 것입니다. 프로그래밍 언어 선택의 이유와 컴파일러, 인터프리터에 대한 이해, 컴파일러 및 IDE의

gdngy.tistory.com

 

반응형

댓글