C 언어에서 %n은 매우 특별한 형식 지정자(format specifier)입니다. 일반적인 형식 지정자와 달리 화면에 무언가를 출력하는 대신, 대응되는 인수가 가리키는 변수에 값을 저장합니다.이때 저장되는 값은 %n이 등장하기 전까지 printf()가 출력한 문자의 총 개수입니다.%n 사용 시 주의사항%n 자체는 아무것도 출력하지 않습니다. 따라서 실제 문장을 화면에 표시하려면 별도의 printf() 함수 호출이 필요합니다.예제 코드#include<stdio.h> int main() { int s; pri
C 언어에서 printf() 함수는 일반적으로 텍스트와 변수 값을 함께 출력할 때 사용됩니다. 그런데 출력하려는 문장에 % 기호 자체를 포함시키려면 특별한 주의가 필요합니다. 형식 문자열 안에서 %는 %d, %s 같은 서식 지정자의 시작을 알리는 특수 문자로 해석되기 때문입니다. 따라서 %를 문자열이나 텍스트 그대로 출력하려면 %%처럼 두 번 연속해서 작성해야 합니다. % 하나만 단독으로 사용하면 아무것도 출력되지 않으며, 컴파일러에 따라 오류나 경고조차 나타나지 않는 미정의 동작(undefined behavior)이 발생할 수 있
C 언어에서 표준 입출력 라이브러리(stdio.h)는 다양한 출력 함수를 제공합니다. 그중 가장 많이 사용되는 세 가지 함수인 printf(), sprintf(), fprintf()는 비슷해 보이지만 각각 용도와 동작 방식이 다릅니다. 이 글에서는 세 함수의 문법, 예제 코드, 그리고 핵심적인 차이점까지 자세히 알아보겠습니다. 1. printf() 함수 printf() 함수는 화면(표준 출력)에 메시지와 변수의 값을 함께 출력할 때 사용되는 가장 기본적인 출력 함수입니다. 문법 printf(const char *str, ...);
C언어에는 키보드나 입력 스트림으로부터 문자 하나를 읽어오는 다양한 함수들이 있습니다. 이 함수들은 모두 읽어온 문자를 정수형 값으로 반환하며, 파일의 끝에 도달하거나 오류가 발생하면 EOF(-1)를 반환합니다. 다만 각 함수마다 입력 대상과 동작 방식이 다르므로, 상황에 맞는 함수를 선택하는 것이 중요합니다. 지금부터 네 가지 함수를 하나씩 자세히 살펴보겠습니다. 1. getc() 함수 getc()는 지정된 입력 스트림(FILE 스트림)으로부터 문자 하나를 읽어 정수 값으로 반환합니다. 읽기에 실패하거나 파일의 끝에 도달하면 E
strcpy()는 표준 라이브러리 함수로, 한 문자열을 다른 문자열로 복사할 때 사용됩니다. C 언어에서는 string.h 헤더 파일에 선언되어 있고, C++에서는 cstring 헤더 파일에 선언되어 있습니다. 이 함수는 복사가 완료된 후 목적지(dest) 문자열의 포인터를 반환합니다. strcpy() 함수의 문법 char* strcpy(char* dest, const char* src); dest: 복사된 문자열이 저장될 목적지 버퍼입니다. src: 복사할 원본 문자열입니다. strcpy()의 주요 특징 원본 문자열 전체를
strcmp() 함수란?strcmp() 함수는 C 언어 표준 라이브러리에 포함된 내장 함수로, string.h 헤더 파일에 선언되어 있습니다. 이 함수는 두 개의 문자열 인자를 비교하는 데 사용되며, 사전순(lexicographical order)으로 비교를 수행합니다. 즉, 두 문자열을 문자 단위로 하나씩 비교하며, 첫 번째 문자부터 시작해 두 문자가 서로 다르거나 NULL 문자(\0)를 만날 때까지 비교를 계속 진행합니다.두 문자열의 첫 번째 문자가 같다면 함수는 두 번째 문자를 검사하고, 그래도 같으면 세 번째 문자를 검사하는
float 자료형이란? float는 부동소수점 수(실수)를 표현하기 위해 사용되는 자료형입니다. float는 32비트 IEEE 754 단정밀도(single precision) 부동소수점 형식을 따르며, 1비트는 부호, 8비트는 지수, 나머지 23비트는 가수 값을 저장하는 데 사용됩니다. float가 표현할 수 있는 정밀도는 소수점 이하 약 6자리입니다. C 언어에서 float 변수를 선언하는 기본 문법은 다음과 같습니다. float variable_name; 다음은 C 언어에서 float를 활용한 간단한 예제입니다. 예제 #inc
goto 문은 C와 C++에서 제공하는 점프문(jump statement)입니다. 함수 내부에서 실행 흐름을 특정 레이블(label)이 붙은 다른 문장으로 즉시 이동시키는 역할을 합니다.goto 문이란?goto 문은 함수 안에서 한 문장에서 다른 문장으로 프로그램의 제어를 무조건적으로 옮기는 무조건 분기(unconditional jump) 문입니다. 하지만 이 문의 사용은 대부분의 프로그래밍 전문가들에 의해 강력히 권장되지 않습니다. 그 이유는 다음과 같습니다.프로그램의 구조를 복잡하게 만들어 코드 가독성을 크게 떨어뜨립니다.제어
continue 문이란? continue 문은 C/C++에서 사용되는 반복문 제어문(loop control statement)입니다. 현재 진행 중인 반복(iteration)을 즉시 중단하고 다음 반복을 실행하도록 만드는 역할을 합니다. break 문이 반복문 자체를 완전히 종료하는 것과 달리, continue 문은 반복문을 유지한 채 해당 차례만 건너뛴다는 점에서 정반대로 작동합니다. continue 문의 동작 방식 continue가 실행되면 그 아래에 위치한 코드들은 모두 건너뛰어집니다. for 문에서는 증감식으로, whil
break 문은 C 언어에서 루프(반복문)의 실행 흐름을 제어하는 중요한 문법입니다. 주로 while, for, do-while 같은 반복문을 강제로 종료할 때 사용되며, switch 문에서 특정 case의 실행을 끝내는 용도로도 활용됩니다. break 문이란? break 문은 프로그램 실행 중 해당 문장을 만나는 순간 즉시 반복문을 탈출합니다. 이후 프로그램은 반복문 바로 아래에 있는 다음 문장부터 계속 실행됩니다. 조건과 관계없이 반복문을 중간에 빠져나와야 하는 상황에서 매우 유용합니다. 기본 문법 break; break 문은
For 루프란?for 루프는 대표적인 반복 제어 구조로, 정해진 횟수만큼 문장을 실행합니다. 먼저 반복이 시작되는 지점인 초기값을 설정하고, 다음으로 참(true) 또는 거짓(false)을 판별하는 조건식을 검사합니다. 마지막으로 증감 연산을 통해 루프 변수를 갱신하며 다음 반복으로 넘어갑니다.C 언어에서 for 루프의 기본 문법은 다음과 같습니다.for ( init; condition; increment ) { statement(s); }다음은 C 언어에서 for 루프를 활용한 예제입니다.예제#include
C 언어에서는 ASCII 코드의 특성을 활용하면 별도의 라이브러리 함수 없이도 문자열을 손쉽게 대문자로 변환할 수 있습니다. 아래는 사용자가 입력한 문자열을 모두 대문자로 바꾸어 출력하는 프로그램 예제입니다.예제 코드#include <stdio.h> #include <string.h> int main() { char s[100]; int i; printf(\nEnter a string : ); gets(s); for (i = 0; s[i]!=\0; i++) {
C 언어 배열이란?배열(Array)은 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 자료구조입니다. 메모리상에서 가장 낮은 주소가 첫 번째 요소에 해당하며, 가장 높은 주소가 마지막 요소에 해당합니다.배열 인덱스의 기본 규칙배열의 인덱스는 0부터 시작해서 배열 크기 - 1로 끝납니다. 따라서 배열의 크기는 반드시 0보다 큰 정수여야 합니다.배열 크기 = 10일 경우첫 번째 인덱스 = 0마지막 인덱스 = 배열 크기 - 1 = 10 - 1 = 9C 언어에서 배열 선언하기C 언어에서 배열을 선언하는 기본 문법은 다음과 같습
C 언어에서 문자열(string)은 널(null) 문자(\0)로 끝나는 문자들의 배열입니다. 여기서 중요한 점은 널 문자를 사용자가 직접 입력하는 것이 아니라, 컴파일러가 문자열의 끝에 자동으로 추가한다는 것입니다.배열과 문자열의 차이배열과 문자열의 차이는 널 문자의 유무입니다. 일반적인 배열의 경우 컴파일러가 마지막에 널 문자를 붙이지 않지만, 문자열은 컴파일러가 자동으로 널 문자를 추가하여 문자열의 끝을 표시합니다.문자열 선언 방법C 언어에서 문자열을 선언하는 기본 문법은 다음과 같습니다.char myStr[size];각 구성
열거형(Enum)이란?열거형(Enumeration)은 C 언어에서 사용자가 직접 정의할 수 있는 데이터 타입입니다. 열거형은 정수 상수에 의미 있는 이름을 부여하여 프로그램의 가독성을 높이고 유지보수를 쉽게 만들어 줍니다. 요일이나 월처럼 서로 연관된 상수들을 하나의 그룹으로 묶어 관리할 때 특히 유용합니다.열거형을 선언할 때는 enum 키워드를 사용합니다.열거형 선언 문법다음은 C 언어에서 열거형을 선언하는 기본 문법입니다.enum enum_name{const1, const2, ....... };열거형 변수 정의 방법enum 키워
iswlower() 함수란?iswlower() 함수는 C/C++의 표준 라이브러리에 포함된 내장 함수로, 전달받은 와이드 문자(wide character)가 소문자인지 아닌지를 판별합니다.이 함수는 사용하는 언어에 따라 선언 위치가 다릅니다.C++: <cwctype> 헤더 파일에 선언됨C: <ctype.h> 헤더 파일에 선언됨동작 방식 및 반환값iswlower() 함수는 와이드 문자 하나를 매개변수로 받아 다음과 같은 결과를 반환합니다.문자가 소문자가 아니면 → 0(영) 반환문자가 소문자이면 → 0이 아닌 값(
C/C++ towupper() 함수란?towupper() 함수는 C/C++ 표준 라이브러리에 내장된 함수로, 와이드 문자(wide character)를 대문자로 변환하는 역할을 합니다. C++ 언어에서는 <cwctype> 헤더 파일에 선언되어 있으며, C 언어에서는 <wctype.h>(또는 <ctype.h>) 헤더 파일에 선언되어 있습니다.이 함수는 변환할 하나의 와이드 문자를 인수로 전달받습니다. 전달된 문자가 소문자라면 해당하는 대문자로 변환하여 반환하고, 이미 대문자이거나 대문자로 변환할 수 없
iswdigit() 함수란?iswdigit() 함수는 C/C++에서 제공하는 내장(built-in) 함수로, 전달된 와이드 문자(wide character)가 십진수 숫자(decimal digit)인지 여부를 판별합니다. 이 함수는 C++에서는 <cwctype> 헤더 파일에 선언되어 있으며, C 언어에서는 <ctype.h> 헤더 파일에 선언되어 있습니다.함수는 하나의 문자를 인자로 받으며, 이 문자는 와이드 문자(wchar_t) 타입입니다.반환값0부터 9까지의 문자는 십진수 숫자로 분류됩니다.와이드 문자가 숫자
C 언어와 C++에서는 <cstdlib>(C에서는 <stdlib.h>) 헤더 파일에 포함된 표준 라이브러리 함수를 사용하여 문자열을 숫자 데이터로 손쉽게 변환할 수 있습니다. 이 글에서는 대표적인 문자열 변환 함수인 atol(), atoll(), atof()의 개념, 구문, 그리고 실제 동작 예제를 살펴보겠습니다.1. atol() 함수atol() 함수는 문자열을 long 정수형(long int)으로 변환합니다. 변환 가능한 숫자가 없거나 변환이 수행되지 않으면 0을 반환하며, 변환에 성공하면 해당 long in
%d 형식 지정자란? %d 형식 지정자는 정수 값을 부호 있는 10진수(signed decimal integer)로 처리합니다. 즉, 값이 양수이든 음수이든 상관없이 항상 10진수 형태로 해석되어 출력됩니다. 다음은 C 언어에서 %d 형식 지정자를 사용한 예제입니다. 예제 #include <stdio.h> int main() { int v1 = 7456; int v2 = -17346; prin