C언어 복습하기 3회차 - 서식 입출력


이 글은 C programming : a modern approach를 바탕으로 공부한 내용을 정리한 것입니다.

오늘 공부할 내용은 서식 입출력에 관한 내용이다. printfscanf에 관한 내용을 다룰 것이다. 이번 챕터에서는 해당 함수들의 간단한 부분만 공부하고 나중에 다시 입출력에 관한 내용을 다룰 예정이다.

목차

  1. 서식입출력
    3.1 printf
    3.2 scanf
    Q & A

3.1 printf


printf 함수는 서식 문자열_format string_이라고 불리는 문자열을 문자열의 특정 부분에 추가된 값과 함께 출력하는 기능을 수행한다.

printf(string, expr1, expr2, ...);

printf가 호출되려면 서식 문자열과 출력을 할 때 삽입되어야하는 값을 공급해주어야 한다.
출력되는 값들은 상수일 수도, 변수일 수도, 혹은 매우 복잡한 표현식일 수도 있다. 서식 문자열은 일반 문자열과 %로 시작되는 변환 규격_conversion specification_을 둘 다 포함할 수 있다. 변환 규격은 출력할 때 채워져야 하는 값을 대신하는 기호나 텍스트의 일부이다.

예시

int i = 10;
int j = 20
float x = 43.2892f;
float y = 5527.0f;

printf("i = %d, j = %d, x = %f, y = %f\n", i, j, x, y);

// 출력
// i = 10, j = 20, x = 43.289200, y = 5527.000000

주의할 점

C 컴파일러들은 서식 문자열에서의 변환 규격의 개수와 출력되는 것들의 개수가 같은지를 반드시 확인하지 않는다.
printf(%d %d\n", i);i`의 값은 제대로 출력하고 아무런 의미없는 정수값을 출력할 것이다.
변환 규격의 개수보다 출력할 값의 개수가 더 많은 경우에는 변환 규격 개수만큼만 출력이 일어난다.

2.2 프로그램의 일반적 구조

Q & A


GCC의 약자는 뭔가요?

GNU C Compiler의 약자였는데 현재는 GNU Compiler Collection의 약자로 바뀌었다. GCC가 C 외에도 Ada, C, C++, Fortran, Java, Objective-C 같은 언어를 컴파일 하기 때문에

컴파일러는 주석을 어떻게 인식하나요?

a/**/b = 0;
예전에는 ab = 0;으로 해석했지만 현재에는 a b = 0으로 해석한다. 컴파일러는 주석을 공백으로 인식한다.

부동소수점 상수 끝에 f를 붙이는 이유

소수점을 포함하지만 f가 붙지 않은 상수는 double 형이 될 수 있습니다. double은 float 보다 2배 정밀도를 갖는 type으로 float이 저장할 수 없는 수가 할당되려고 할 수도 있기 때문

+ Recent posts