4. C 언어 기본 문법 살펴보기
이번 섹션에서는 C 언어 프로그래밍의 핵심인 주요 문법과 코드 작성 방법을 깊이 있게 다룰 예정입니다. 프로그래밍 언어에서 문법(Syntax)은 코드를 작성할 때 반드시 준수해야 하는 규칙을 의미하며, 스타일(Style)은 코드 작성 시 참고할 수 있는 가이드라인을 제공합니다.
문법(Syntax)
문법은 프로그래밍 언어에서 코드를 작성하기 위한 필수 규칙입니다. 이 규칙들은 코드의 정확성을 보장하며, 다음 항목들이 주요 문법 사항에 포함됩니다:
- 출력문: 프로그램에서 결과를 출력하는 방법.
- 대소문자 구분: C 언어는 대소문자를 구분합니다.
- 문(Statement): 프로그램에서 실행할 수 있는 최소 단위입니다.
- 공백(White Space): 코드의 가독성을 높이기 위해 사용됩니다.
- 주석(Comment): 코드에 대한 설명을 추가할 수 있으며, 실행에 영향을 미치지 않습니다.
- 키워드(Keywords): C 언어에서 특별한 의미를 가지는 예약어들입니다.
문법, 스타일, 패턴
- 문법(Syntax): 코드 작성 시 반드시 지켜야 하는 규칙.
- 스타일(Style): 코드를 작성할 때 참고하는 가이드라인.
- 패턴(Pattern): 자주 사용되는 문법과 스타일의 조합.
문법의 기본을 이해하는 것은 중요하며, C 언어는 main()
함수의 존재와 하나 이상의 문(Statement)을 포함해야 한다는 규칙을 갖고 있습니다. 각 문은 세미콜론(;)으로 끝나야 하며, 아무것도 수행하지 않는 문(공문)도 이 규칙에 따릅니다.
예시 코드: empty_statement.c
#include <stdio.h>
int main(void)
{
; // 아무것도 수행하지 않는 문
; // 아무것도 수행하지 않는 문
; // 아무것도 수행하지 않는 문
return 0;
}
이 코드는 C 언어에서 문법적으로 올바르지만, 아무런 작업도 수행하지 않습니다. 이러한 기본적인 문법 사항을 이해하고 활용하는 것은 C 언어 프로그래밍의 기초를 다지는 데 필수적입니다.
추가적으로, C 언어 프로젝트를 구성하고 여러 C 파일을 작성 및 실행하는 방법에 대한 자세한 설명은 다음 링크의 동영상을 참조하세요.
04_02 공문과 문자열 출력.mp4
출력문 사용하기
C 언어에서 명령 프롬프트(터미널 또는 콘솔)에 문자열을 출력하고 싶을 때는 printf()
함수를 사용합니다. 이 함수는 문자열의 형식을 지정하여 출력할 수 있으며, 소괄호를 사용하여 인자를 전달합니다.
printf()
함수의 기본 사용법
printf()
함수는 문자열을 포맷에 따라 출력하는 기능을 제공합니다. 다음 예제는 터미널에 "터미널에 출력할 내용"이라는 문자열을 출력하는 방법을 보여줍니다.
예시 코드: print_format_demo.c
#include <stdio.h>
int main(void)
{
printf("%s\n", "터미널에 출력할 내용");
return 0;
}
출력 결과:
터미널에 출력할 내용
이 코드에서 %s
는 문자열을 대체하는 형식 지정자입니다. \n
은 새로운 줄을 시작하는 데 사용되며, 이는 출력 후 커서를 다음 줄로 이동시킵니다.
추가 학습 자료
C 언어에서 printf()
함수를 사용하여 다양한 숫자 데이터 형식을 여러 가지 방식으로 출력하는 방법에 대해 더 자세히 알아보려면 다음 링크의 강의를 참조하세요: https://youtu.be/ZmQc9kdmXQI
이 강의에서는 printf()
함수의 다양한 사용 방법과 숫자 데이터를 다루는 다양한 형식 지정자에 대해 설명합니다. 이를 통해 C 언어에서 데이터를 효과적으로 출력하는 방법을 배울 수 있습니다.
줄 바꿈 이스케이프 시퀀스: \n
콘솔(명령 프롬프트)에서 출력 내용에 자동으로 줄 바꿈을 추가하고 싶을 때, 백슬래시(\
)와 n
을 결합한 \n
이스케이프 시퀀스를 사용합니다. 이 특수 기호는 출력에서 줄을 바꾸는 데 사용되며, 이스케이프 시퀀스
라고 불립니다. 이스케이프 시퀀스에 대한 더 자세한 설명은 이후에 다룰 예정입니다.
이스케이프 시퀀스의 사용 예를 보여주는 간단한 코드는 다음과 같습니다.
예시 코드: new_line.c
#include <stdio.h>
int main(void)
{
printf("줄\n바꿈");
return 0;
}
출력 결과:
줄
바꿈
이 코드에서 \n
은 새로운 줄로 이동하라는 지시어로 작동하여, "줄"과 "바꿈" 사이에 줄 바꿈을 삽입합니다.
한글과 영문 글꼴의 백슬래시 표시 차이
한글 폰트를 사용할 때 백슬래시 기호는 통화량을 나타내는 원(₩) 기호로 보일 수 있습니다. 반면, 영문 폰트에서는 전통적인 백슬래시(\
)로 표시됩니다. 이는 글꼴에 따라 특수 문자의 시각적 표현이 달라질 수 있음을 의미합니다.
Visual Studio에서는 "도구" 메뉴의 "옵션"을 선택한 후 "환경" 섹션의 "글꼴 및 색" 설정에서 글꼴을 변경할 수 있습니다. 이를 통해 개발 환경에서 사용하는 글꼴을 자신의 선호도에 맞게 조정할 수 있습니다. 이 기능을 사용하여 코드 작성 시 가독성을 높이고, 특수 문자가 예상대로 표시되도록 할 수 있습니다.
그림: Visual Studio에서 글꼴 바꾸기
이와 관련된 더 자세한 정보를 원한다면 다음 비디오 링크를 참조하세요.
이 자료에서는 C 언어에서 줄 바꿈을 포함하는 다양한 방법과 이스케이프 시퀀스의 활용에 대해 설명합니다.
들여쓰기(Indentation)의 중요성
프로그램의 소스 코드에서 들여쓰기는 가독성을 향상시키기 위해 필수적입니다. 코드의 구조를 명확하게 하여, 프로그래머가 자신의 코드뿐만 아니라 타인의 코드도 쉽게 이해할 수 있게 합니다. 일반적으로 코드 블록을 시작하는 중괄호 {
바로 다음에 나오는 코드부터 들여쓰기를 시작합니다.
들여쓰기 규칙
- 공백 사용: 들여쓰기에는 주로 공백 4칸을 사용합니다. 이는 스페이스바를 네 번 눌러서 적용할 수 있습니다.
- 탭(Tab) 키 설정: Visual Studio와 같은 개발 환경에서는 탭 키를 사용하여 자동으로 스페이스 4칸으로 들여쓰기를 설정할 수 있습니다. 이를 통해 일관된 들여쓰기를 유지할 수 있습니다.
그림: 들여쓰기 예시
들여쓰기의 실제 적용
다음은 들여쓰기가 적용된 C 코드의 예시입니다. 이 코드는 "들여쓰기는 공백 4칸을 사용"이라는 문구를 출력합니다.
코드 예시: indent.c
#include <stdio.h>
int main(void)
{
printf("들여쓰기는 공백 4칸을 사용\n");
return 0;
}
출력 결과:
들여쓰기는 공백 4칸을 사용
다른 들여쓰기 방법
- 2칸 들여쓰기: 일부 프로그래밍 커뮤니티에서는 공간을 절약하기 위해 2칸 들여쓰기를 선호합니다.
- 탭(Tab) 사용: 명시적으로 탭을 들여쓰기에 사용하는 경우도 있습니다. 이 방법은 개발 환경에 따라 탭의 너비를 사용자가 설정할 수 있기 때문에 유연합니다.
중요한 점은 스페이스와 탭을 혼용하여 사용하지 않는 것입니다. 들여쓰기는 코드의 시작과 끝을 명확하게 하여, 나중에 코드를 검토하거나 타인이 코드를 이해하기 쉽게 만드는 데 큰 역할을 합니다.
Visual Studio에서 탭 키로 들여쓰기 설정하기
Visual Studio에서 C 언어 코드를 편집할 때 탭 키를 사용하여 자동으로 공백을 삽입하는 기능은 코드의 가독성을 향상시키는 데 유용합니다. 기본 설정에서는 탭 키를 누를 때 4개의 공백으로 처리되도록 설정되어 있습니다. 이 설정을 변경하고 싶다면 다음 단계를 따르세요:
- Visual Studio의 메뉴에서 도구 > 옵션으로 이동합니다.
- 옵션 창에서 텍스트 편집기 > C/C++ > 탭을 선택합니다.
- 탭에 대한 설정에서 공백 삽입을 선택하고, 원하는 탭 크기와 들여쓰기 크기를 설정합니다.
이 과정을 통해 사용자가 선호하는 들여쓰기 스타일에 맞게 Visual Studio의 동작을 조정할 수 있습니다. 이 설정은 코드를 더 읽기 쉽고 일관되게 유지하는 데 도움을 줍니다.
그림: Visual Studio에서 탭 크기 조절하기
추가적으로, Visual Studio에서 들여쓰기 설정을 조정하는 방법에 대해 더 알고 싶다면 다음 링크의 동영상을 참조하세요.
이 동영상에서는 Visual Studio의 들여쓰기 설정을 변경하는 방법을 자세히 설명하여, 사용자가 코드 편집 환경을 개인의 코딩 스타일에 맞게 맞춤 설정할 수 있도록 돕습니다.
주석문(코드 설명문 : Comment)
프로그래밍 언어에서 주석문(Comment)은 코드의 설명을 위한 문구로, 실행 시에는 전혀 영향을 주지 않습니다. 주석문에는 프로그램의 개요, 작성자의 정보, 작성일, 변경 내역 등 필요한 부가 정보를 기록할 수 있습니다. 이는 코드를 컴파일할 때 무시되므로, 실행 파일에는 전혀 영향을 주지 않습니다. 또한, 주석문을 사용하여 일시적으로 코드를 비활성화하는데도 활용할 수 있습니다.
C 언어에서는 슬래시 기호를 두 번 사용(//
)하여 해당 줄의 나머지 부분을 주석문으로 처리합니다.
아래에 제시된 예제 코드를 편집창에 입력해 보세요. 단순히 코드를 읽는 것보다는 실제로 코드를 작성하고 실행해 보는 것이 훨씬 더 효과적입니다. 이 강의를 통해 C 언어로 수많은 파일과 프로젝트를 만들어 보시길 권장합니다. 프로그래밍은 결국 실습을 통해 배우는 것이 가장 중요합니다.
코드: comment.c
#include <stdio.h>
int main(void)
{
// 주석문은 실행에 영향을 주지 않는 코드 설명문입니다.
printf("주석문\n");
return 0;
}
주석문
한 줄 주석: //
C 언어에서의 주석문은 크게 2가지가 있으나 기본은 한 줄 주석인 //
(더블 슬래시)입니다.
더블 슬래시(//
)를 사용하는 한 줄 주석은 //
뒤에 나오는 모든 구문을 주석 처리합니다.
코드: single_line_comment.c
#include <stdio.h>
int main(void)
{
//printf("현재 구문은 실행되지 않습니다.\n");
return 0;
}
여러 줄 주석: /* */
슬래시 별표(/*
)로 시작해서 별표 슬래시(*/
)를 사용하는 여러 줄 주석 또는 블록 주석은 /*
와 */
사이의 모든 내용을 주석으로 처리합니다.
코드: multi_line_comment.c
#include <stdio.h>
int main(void)
{
/*
printf("현재 구문은 실행되지 않습니다.\n");
printf("현재 구문은 실행되지 않습니다.\n");
*/
return 0;
}
TIP
별표(*
) 기호의 원어는 애스터리스크(asterisk
)입니다.
이스케이프 시퀀스(Escape Sequences) 이해하기
C 언어에서 printf()
함수를 사용할 때, 특정 문자 앞에 백슬래시(\
)를 붙여 특별한 기능을 수행하는 확장 문자들을 이스케이프 시퀀스라고 합니다. 이러한 시퀀스는 출력 텍스트에서 특별한 조작이 필요할 때 유용하게 사용됩니다. 예를 들어, '\n'
은 New Line
의 약자로, 콘솔 화면에서 줄을 바꾸는 기능을 수행합니다.
주요 이스케이프 시퀀스
\n
: 새로운 줄(개행)을 시작합니다.\"
: 큰 따옴표를 문자열 내에 표시합니다.\'
: 작은 따옴표를 문자열 내에 표시합니다.
이스케이프 시퀀스를 사용하면 문자열 내에서 제어 문자를 포함하거나, 특정 문자를 직접 표현할 수 없는 경우에 유용합니다.
예시 코드: escape_sequence.c
#include <stdio.h>
int main(void)
{
printf("안녕 \" 난 큰 따옴표야.\n");
printf("안녕 \' 난 작은 따옴표야.\n");
}
출력 결과:
안녕 " 난 큰 따옴표야.
안녕 ' 난 작은 따옴표야.
이 코드 예시는 큰 따옴표와 작은 따옴표를 문자열 내에서 안전하게 출력하는 방법을 보여줍니다. 이와 같이 이스케이프 시퀀스는 C 언어에서 문자열을 다룰 때 매우 중요한 역할을 합니다.
추가적으로, C 언어에서 이스케이프 시퀀스의 사용 방법에 대해 더 자세히 알고 싶다면 다음 링크의 동영상을 참조하세요.
이 동영상은 이스케이프 시퀀스의 다양한 사용 예를 보여주며, C 언어 프로그래밍에서 문자열을 효과적으로 다루는 방법을 설명합니다.
주요 이스케이프 시퀀스 이해하기
이스케이프 시퀀스는 C 언어에서 문자열 내에서 특별한 문자를 표현하기 위해 사용되는 백슬래시(\
)로 시작하는 코드입니다. 다음은 C 언어에서 자주 사용되는 이스케이프 시퀀스와 그 설명입니다.
자주 사용되는 이스케이프 시퀀스
이스케이프 시퀀스 | 설명 |
---|---|
\n |
새 줄 (다음 행으로 이동) |
\t |
탭 (탭 크기만큼 들여쓰기) |
\r |
캐리지 리턴 (줄의 시작으로 이동) |
\' |
작은따옴표 문자 출력 |
\" |
큰따옴표 문자 출력 |
\\ |
백슬래시 문자 자체 출력 |
\b |
백스페이스 (커서를 뒤로 한 칸 이동) |
\a |
경고음 (삐 소리) 출력 |
\0 |
널 종결 문자 (문자열의 끝) |
백슬래시(역슬래시)와 원 기호의 표시 차이
프로그래밍에서 백슬래시(\
)는 키보드상의 원(₩
) 기호와 같은 키로 입력됩니다. 영문 글꼴에서는 \
로, 한글 글꼴에서는 ₩
로 표시되는 경우가 일반적입니다.
Visual Studio에서 키보드에 없는 특수 문자 입력하기
한글 입력 상태에서 한글 자음을 입력한 후 한자 키를 누르면 해당 자음에 매칭되는 특수 문자 리스트가 나타납니다. 이 방법은 Visual Studio뿐만 아니라 메모장 등 다른 텍스트 편집기에서도 사용할 수 있습니다.
예제: 문자 상수 사용하기
이스케이프 시퀀스를 사용한 문자 상수의 예제는 다음과 같습니다.
#include <stdio.h>
int main(void)
{
printf("한 줄 내림: \n");
printf("\n");
printf("뒤로 한 칸: _\b");
printf("\n");
printf("탭 키 추가: \t");
printf("\n");
printf("백슬래시 자체: \\");
printf("\n");
printf("작은따옴표: \' ");
printf("\n");
printf("큰따옴표: \" ");
printf("\n");
return 0;
}
출력 결과:
한 줄 내림:
뒤로 한 칸: _
탭 키 추가:
백슬래시 자체: \
작은따옴표: '
큰따옴표: "
이 예제는 다양한 이스케이프 시퀀스를 사용하여 특별한 문자들을 출력하는 방법을 보여줍니다.
서식 지정자를 활용한 출력 형식 설정하기
프로그램 실행 결과를 화면에 출력할 때 사용하는 출력문 등에서는 자리 표시자(틀)라는 개념을 통해서 출력 서식을 결정할 수 있습니다. %d
, %f
, %s
형태로 자리를 만들고 뒤에서 순서대로 넘어오는 값을 출력하는 형태입니다.
이러한 것을 자리 표시자(Place Holder) 또는 서식 지정자(Format Specifier)라고 합니다.
그림: 서식 지정자
주요 서식 지정자
%d
: 부호 있는 정수를 출력합니다.%o
: 정수를 8진수 형태로 출력합니다.%x
: 정수를 16진수 형태로 출력합니다.
%u
: 부호 없는 정수를 출력합니다.%f
: 부동 소수점 수(실수)를 출력합니다.%.2f
: 소수점 아래 두 자리까지의 실수를 출력합니다.%e
: 과학적 표기법(지수 형태)으로 실수를 출력합니다.%g
:%f
와%e
중 더 짧게 표현될 수 있는 형태로 실수를 출력합니다.
%lf
: double 형 실수를 출력합니다.%c
: 단일 문자를 출력합니다.%s
: 문자열을 출력합니다.%p
: 포인터의 주소를 출력합니다.%%
:%
기호 자체를 출력합니다.
서식 지정자의 고급 사용법
- 정렬과 너비 지정:
%5d
는 숫자를 오른쪽 정렬로 5칸에 출력합니다. 반대로,%-5d
는 숫자를 왼쪽 정렬로 5칸에 출력합니다. - 부호 추가:
%+d
는 숫자 앞에 부호(+ 또는 -)를 붙여 출력합니다. - 공백 채우기:
%05d
는 출력할 숫자 앞의 빈 공간을 0으로 채워 출력합니다.
예제 코드와 출력 결과
코드: print_format.c
#include <stdio.h>
int main(void)
{
printf("%d\n", 360); // 정수
printf("%f\n", 3.14); // 실수
printf("%5d\n", 360); // 5칸 잡고 오른쪽
printf("%7.3f\n", 3.14); // 7칸 잡고 소수 3자리 오른쪽 출력
printf("%-5d\n", 360); // 5칸 잡고 왼쪽
printf("%-7.3f\n", 3.14); // 7칸 잡고 소수 3자리 왼쪽 출력
printf("%+5d\n", 360); // 부호 기호 추가
printf("%+5d\n", -360); // 부호 기호 추가
printf("%+7.3f\n", 3.14); // 부호 기호 추가
printf("%05d\n", 360); // 0으로 공백 채우기
printf("%+05d\n", 360); // 부호 기호 추가 + 0으로 공백 채우기
printf("%+07.3f\n", 3.14); // 부호 기호 추가 + 0으로 공백 채우기
return 0;
}
출력 결과:
360
3.140000
360
3.140
360
3.140
+360
-360
+3.140
00360
+0360
+03.140
이 코드는 다양한 서식 지정자를 사용하여 숫자와 문자를 다양한 형태로 출력하는 방법을 보여줍니다. 이를 통해 데이터를 보다 명확하고 가독성 높게 표현할 수 있습니다.
자세한 설명과 추가 예제는 다음 동영상을 참조하세요.
화면 출력 함수 이해하기
C 언어 프로그래밍에서는 다양한 화면(콘솔) 출력 함수를 사용하여 데이터를 출력합니다. 이러한 함수들은 프로그램의 실행 결과를 사용자에게 보여주는 중요한 역할을 합니다. 주로 사용되는 출력 함수에는 printf()
, putchar()
, puts()
등이 있습니다.
주요 출력 함수
printf()
: 서식 지정자를 사용해 다양한 형태의 데이터를 출력합니다. 가장 유연하고 널리 사용되는 출력 함수입니다.putchar()
: 단일 문자를 출력합니다. 이 함수는 작은 따옴표 안에 있는 문자 하나를 출력하는 데 사용됩니다.puts()
: 문자열을 출력하고 자동으로 줄 바꿈을 추가합니다. 큰 따옴표로 묶인 문자열을 출력할 때 사용됩니다.
TIP
putchar
함수는 영어에서는 일반적으로 "풋차"로 발음됩니다. 하지만, 이 강의에서는 명확한 이해를 돕기 위해 "풋캐릭터"라고 발음하겠습니다.
예제 코드 실행
다음은 printf()
, putchar()
, puts()
함수를 사용하는 간단한 예제 코드입니다. 이 코드를 통해 각 함수의 사용 방법을 이해할 수 있습니다.
코드: output_demo.c
#include <stdio.h>
int main(void)
{
printf("%d\n", 1234); // 서식에 맞게 숫자 출력
putchar('A'); // 단일 문자 출력
putchar('\n'); // 줄 바꿈 문자 출력
puts("C Language"); // 문자열 출력 후 자동으로 줄 바꿈 추가
return 0;
}
출력 결과:
1234
A
C Language
이 예제에서 printf()
는 서식 지정자 %d
를 사용하여 정수 1234를 출력합니다. putchar('A')
는 단일 문자 'A'를, puts("C Language")
는 "C Language" 문자열을 출력한 후 자동으로 줄을 바꿉니다.
추가 학습 자료
화면 출력 함수에 대해 더 자세히 알고 싶다면, 다음 동영상을 참조하세요.
이 동영상은 C 언어의 다양한 출력 함수를 사용하는 방법과 각 함수의 특징을 설명하며, 효과적인 데이터 출력 방법을 학습하는 데 도움을 줍니다.
강의 요약
본 강의에서는 C 언어의 모든 문법을 포괄적으로 다루지는 않습니다. 대신, 학습자가 반드시 알아야 할 핵심적인 내용과, 한 번쯤은 경험해 볼 가치가 있는 중요한 개념들에 초점을 맞춥니다. 박용준 강사는 이러한 내용을 통해 C 언어의 기본적인 이해를 돕고, 프로그래밍 능력의 향상을 목표로 합니다.