< 자료형 이해하기 >
> 자료형(Data Type)의 개념
1) 데이터의 종류에 따라 컴퓨터 메모리의 크기를 정해 놓은 것
(1) 데이터의 종류
: 정수 124, 567
: 실수 3.14
: 문자 'a'
: 문자열 "programming"
→ 데이터 종류에 따라 메모리의 크기가 달라짐
2) 종류
① 기본 자료형
1. 정수형 자료형
(1) 부호 있는 (signed) / 부호 없는 (unsigned) 정수형 자료형
기본표현 | 자료 크기 |
(unsigned) short | 2byte |
(unsigned) int | 4byte |
(unsigned) long | 4byte |
(unsigned) long long | 8byte |
2. 실수형 자료형
(1) 부호 없는 (unsigned) 자료형 없음
(2) 부동소수점(Floating Point) 방식 사용
- 컴퓨터에서 실수를 표시하는 방법
- 소수점의 위치를 고정시키지 않으며 아주 크거나 작은 수를 나타낼 수 있음
기본표현 | 자료 크기 |
float | 4byte |
double | 8byte |
long double | 8byte |
3. 문자형 자료형
(1) 정수형 자료형에 포함됨
(2) 문자 하나 또는 정수값(-128 ~ 127)을 표현할 수 있음
기본표현 | 자료 크기 |
(unsigned) char | 1byte |
문자형 자료형은 문자 집합(character set)에서 그 문자를 나타내는 정수 값으로 표현됨
② 사용자 정의 자료형
1. 문자열 자료형
(1) 여러 개의 문자를 표현하는 자료형
(2) 표현방법
- 문자형 포인터, 문자형 배열을 이용
2. 기타 자료형
- 배열, 구조체, 공용체, 열거형
종류 | 기본 표현 |
문자열 | char * |
char 변수 [ ] | |
배열 | 자료형 변수 [ ] |
구조체 | struct { } |
공용체 | union { } |
열거형 | enum { } |
< 변수와 상수 >
> 변수 (variables) 이해하기
1) 식별자 (identifier) 란?
(1) 프로그래머가 필요 시 프로그램 내에 정의 또는 선언하여 사용하는 이름
- 예: 변수이름, 함수이름 등
(2) 식별자 만드는 규칙
- 구성
: 알파벳 대소문자, 한글, 숫자, _(언더바) 를 사용, 이외는 사용불가(공백포함)
- 식별자 첫문자
: 알파벳 대소문자, _(언더바), 한글로 시작하여야 함, 숫자는 사용불가
- 예약어는 사용불가
- 알파벳 대소문자는 구분함
2) 예약어 (Reserved Word) 란?
(1) C 언어에서 사용하는 문법적 단어들
(2) 식별자로 사용할 수 없음
3) 변수 (variables)란?
(1) 데이터를 저장하는 컴퓨터 메모리 공간을 가리키는 식별자
(2) 변수에 데이터를 저장, 수정, 읽기 가능
(3) 프로그램이 실행되는 동안 변수의 데이터 값이 유효함
(4) 데이터의 자료형 크기에 따라 컴퓨터 메모리 공간이 확보 됨
> 변수 (variables) 활용하기
① 변수 이름 및 사용범위
1) 변수 이름 표기법
(1) 가독성 있게 표현하는 것이 좋음
- 의미 없는 변수 이름은 사용하지 않는 것이 좋음
- 변수 사용 목적에 맞게 표기하는 것이 좋음 (동사)
(2) 표기법
- 카멜 표기법(Camel Case): 2개의 단어를 연결하여 사용 / 첫번째 단어는 소문자, 두번째 단어 대문자(scoreCount, myTotal 등)
- 스네이크 표기법(Snake Case): 2개의 단어를 연결하여 사용 / 첫번째 단어와 두번째 단어를 _ 언더바로 연결 (score_count, my_total 등)
2) 변수를 사용할 수 있는 범위
(1) 변수 선언 위치
- 프로그램 내에 원하는 위치에 선언 가능(중복 선언 불가)
- 선언하는 위치에 따라서 사용 범위가 정해짐
(2) 함수 내부에 선언한 변수 사용범위
- 변수 선언 아래쪽으로 사용가능
(3) 함수 외부에 선언한 변수 사용범위
- 변수 선언 아래쪽에 있는 함수에서 사용가능
② 변수의 데이터 표현범위
1) 오버플로우 (Overflow)
(1) 변수의 자료형에 따라 표현할 수 있는 데이터의 최소값과 최대값이 있음
(2) 변수가 표현할 수 있는 최대값보다 큰 값이 변수에 지정될 때 발생
(3) 오버플로우 발생 시 변수에는 쓰레기 값이 지정됨
- 정수형 자료형 short의 데이터 표현범위: -32,768 ~ 32,767
2) 언더플로우 (Underflow)
(1) 변수가 표현할 수 있는 최소값보다 작은 값이 변수에 지정될 때 발생
(2) 언더플로우 발생 시 변수에는 쓰레기 값이 저장됨
- 정수형 자료형 short의 데이터 표현범위: -32,768 ~ 32,767
#include <stdio.h>
int main()
{
short test1 = 32767;
printf("%d", test1); // 32767 (short 자료형 최대값 이하이므로 정상)
return 0;
}
#include <stdio.h>
int main()
{
short test1 = 32768;
printf("%d", test1); // -32768 (short 자료형 최대값보다 크므로 오버플로우 발생)
return 0;
}
③ 자료형 변환
1) 자료형 변환이란?
(1) A 라는 자료형의 값을 B라는 자료형의 값으로 변환하는 것
(2) 종류 : 자동 자료형 변환, 강제 자료형 변환
2) 자동자료형 변환
- 메모리 크기가 작은 자료형의 값을 메모리 크기가 큰 자료형의 값으로 변환하는 것
3) 강제 자료형 변환
(1) 메모리 크기가 큰 자료형의 값을 메모리 크기가 작은 자료형의 값으로 변환하는 것
(2) 변수의 값은 작은 자료형 크기에 맞는 값이어야 함 (오버플로우 주의)
(3) 실수형 자료형의 값이 정수형 자료형의 값으로 변환 될 때는 소수점 이하는 버려짐
(4) 캐스트 (cast) 연산자를 사용하여 강제 자료형 변환
- 형식 : (자료형)변수이름
- 캐스트 연산자를 사용하지 않을 경우:
자동 자료형 변환이 발생하며 컴파일 시 경고 메시지가 나옴 (실행은 가능함)
" 'float' 에서 'short'(으) 로 변환하면서 데이터가 손실될 수 있습니다. "
char | short | int | float | double |
1 byte | 2 byte | 4 byte | 4 byte | 8 byte |
#include <stdio.h>
int main()
{
// 변수 선언
char ch = 'a';
short sh = 123;
int in = 4567;
float fl = 123.34f;
double dou = 456.79;
// 자동 자료형 변환 예제
sh = ch; // char > short
in = sh; // short > int
fl = in; // int > float
dou = fl; // float > double
dou = ch; // char > double
// 강제 자료형 변환 예제
ch = (char)sh; // short > char
sh = (short)in; // int > short
in = (int)fl; // float > int
fl = (float)dou; // double > float
ch = (char)dou; // double > char
}
④ 변수 활용하기 실습
#include <stdio.h>
int sumCount = 1; // 함수외부에서 전역변수 선언
int main()
{
// 변수이름 표기법, 변수에 값을 넣기 전에 항상 변수 선언이 우선!
int countNum = 0, my_Total = 0; //함수 내부에서 지역변수 선언
// 변수 선언 위치
countNum = 10;
my_Total = 20; //각 변수에 정수 대입
int countTotal = 0; // 함수 내부에서 지역변수 선언
countTotal = 30; // 위 지역변수 기존 값 변경 대입
countNum = 40; // 기존 10 에서 40으로 값 변경 대입
sumCount = 50; // 전역변수에 대입된 1 > 50으로 변경 대입
printf("sumCount = %d\ncountNum = %d\nmy_Total = %d\ncountTotal = %d\n", sumCount, countNum, my_Total, countTotal);
// Overflow_ 데이터 표현범위 : -32,768 ~ 32,767
short over_ok = 32767;
short over_flow = 32768;
printf("Overflow = %d, %d\n", over_ok, over_flow);
// Underflow_ 데이터 표현범위 : -32,768 ~ 32,767
short under_ok = -32768;
short under_flow = -32769;
printf("Underflow = %d, %d\n", under_ok, under_flow);
// 자동 자료형 변환
char ch = 'a';
short sh = 123;
int in = 4567;
long lo = 12345;
float fl = 123.34f;
double dou = 456.78;
sh = ch; // char > short
in = sh; // short > int
fl = in; // int > float
dou = fl; // float > double
printf("자동 자료형 변환: ch = %c, sh = %d, in = %d, fl = %f, dou = %lf\n", ch, sh, in, fl, dou);
/*
// 강제 자료형 변환
char ch = 'a';
short sh = 123;
int in = 4567;
long lo = 12345;
float fl = 123.34f;
double dou = 456.78;
ch = (char)sh; // short > char
sh = (short)in; // int > short
in = (int)fl; // float > int
fl = (float)dou; // double > float
//printf("강제 자료형 변환: ch = %c, sh = %d, in = %d, fl = %f, dou = %lf\n", ch, sh, in, fl, dou);
*/
}
/*
sumCount = 50
countNum=40
my_Total=20
countTotal=30
Overflow = 32767, -32768
Underflow = -32768, 32767
자동 자료형 변환 : ch=a, sh=97, in=97, fl=97.000000, dou=97.000000
강제 자료형 변환 : ch={, sh=4567, in=123, fl=456.779999, dou=456.780000
*/
> 상수 (constant) 이해하기
1) 상수(constant) 란?
(1) 프로그램 수행 중 값이 변하지 않는 데이터
(2) 상수값의 종류
- 정수, 실수, 문자, 문자열
(3) 상수값을 기호로 정의하여 사용 가능
종류 | 자료형 | 접미사 | 사용 예 |
정수 | short, int | 없음 | 023 // 8진수 253 // 10진수 0x4D // 16진수 |
long | L 또는 l | 123L 또는 234l | |
unsigned | U 또는 u | 123U 또는 123u // unsigned int 123UL 또는 123ul // unsigned long |
|
실수 | float | F 또는 f | 123.45F 또는 123.45f |
double | 없음 | 123.45 1.2E+10 또는 1.2e-5 // 지수형 표현 |
|
문자, 문자열 | char | 없음 | 'a' // 문자 "program" // 문자열 |
> 상수 (variables) 활용하기
① 상수 표현
1) 지수 형식 표기 방법
(1) 알파벳 소문자 e 또는 대문자 E 를 이용
(2) 가수부와 지수부를 분리해서 표현
123.456 → 1.23456(가수부) * 10^2(지수부) → 1.23456e + 02 // 1.23456E + 2
2) 기호 상수 (Symbolic Constant)
(1) 상수 값에 이름을 붙여서 사용
(2) 상수이름은 관행적으로 대문자로 표기하며, 식별자 만드는 규칙 적용
(3) 종류 : #define 기호 상수, const 기호 상수
(4) #define 기호 상수
- 선언 위치 : 전처리기 선언부
#define 상수이름 상수값
- #define : 명령
- 상수이름: 관행적으로 대문자사용, 식별자 만드는 규칙 적용
- 상수 값: 정수, 실수, 문자, 문자열, 상수
- 세미콜론( ; ) 붙이지 않음
(5) const 기호 상수
- 변수 선언문 앞에 const 를 붙임
- const 로 선언된 변수는 상수로 취급됨
- 선언위치 : 프로그램 내 원하는 위치
const 자료형 상수이름 = 상수값 ;
- const : 명령
- 자료형 : 상수값의 자료형
- 상수이름 : 상수이름 (관행적으로 대문자)
- 상수값 : 정수, 실수, 문자, 문자열, 상수
- 명령문의 마지막에 세미콜론( ; ) 사용
② 상수 활용하기 실습
#include <stdio.h>
#define PI 3.14159
int main()
{
// 지수형 표현
float val_float_1 = 123.456f;
float val_float_2 = 1.23456E+02f;
double val_double_1 = 0.0123;
double val_double_2 = 1.23E-03;
printf("float value_1 = %f, value_2 = %E", val_float_1, val_float_2);
printf("\n");
printf("double value_1 = %lf, value_2 = %E", val_double_1, val_float_2);
// 기호 상수
int var_test = 100; // var_test 라는 변수에 100 대입
const int MAX = 200; // MAX 라는 상수에 200 대입
printf("#define = %f\n", PI);
printf("const = %d\n", MAX);
var_test = MAX; // 변수는 값을 변경 가능
printf("var_test = %d\n", var_test);
}
/*
float value_1 = 123.456001, value_2 = 1.234560E+02
double value_1 = 0.012300, value_2 = 1.230000E-03
#define = 3.141590
const = 200
var_test = 200
*/
> 변수와 상수 이용하기
1) 변수 선언 방법
자료형 변수이름 = 상수값 ;
- 자료형: 프로그래머가 원하는 자료형
- 변수이름: 식별자 만드는 규칙에 맞게 프로그래머가 정함
- 대입연산자: 오른쪽에 있는 상수값을 변수에 저장
- 상수값: 자료형과 같은 상수값을 사용
- 세미콜론: C 언어에서 프로그램 한 줄의 마지막을 표현
2) 변수 선언 예제
int total = 100;
- int: 정수형 자료형
- total: 변수 이름
- 100: 정수형 상수값
* 컴퓨터 메모리는 int 형 자료형이기 때문에 4byte가 할당이 되고
컴퓨터 메모리를 식별하는 변수 이름은 "total"
그리고 "total" 메모리가 식별하고 있는 메모리에 100 이 저장
3) 변수 선언 두 번째 방법
- 변수 선언하는 부분과 상수값을 저장하는 부분을 분리
int total;
total = 100;
- int total: 변수 선언
- total = 100: 변수에 상수값 저장
< 표준 입출력함수 이해하기 >
> 표준 출력 함수 이해하기
1) printf( ) 함수란?
- 표준 출력 (화면) 에 표시하고자 하는 내용을 출력해 주는 기능을 가진 함수
print("화면에 출력될 내용", 형식지정자의 개수 만큼의 변수 또는 상수 나열);
: 화면에 출력될 내용 (문자열, 형식지정자, 제어문자)
: 주의_ 큰 따옴표 다음에 콤마
: 형식지정자의 개수 만큼의 변수 또는 상수 나열 (콤마로 구분)
2) 형식 지정자
(1) 변수나 상수의 값을 문자열로 변환하며 화면에 출력할 수 있게 함
(2) % 로 시작하며, 자료형에 따라 지정되어 있음
자료형 | 자료형 | 형식 지정자 |
정수형 | short, int | %d |
long | %ld | |
unsigned | %u | |
8 진수 | %o | |
16 진수 | %x, %X | |
실수형 |
float | %f |
double | %lf | |
지수형 | %e, %E | |
문자 | char | %c, %d |
문자열 | char *, char[ ] | %s |
포인터 | void * | %p |
* 형식 지정자는 조합해서 사용가능
예: %lu (unsigned long)
(3) 자릿수 지정
- 출력될 데이터 값의 자릿수를 지정
- 출력 형식 기호
기호 | 설명 |
+ | 부호 (+ / -) 표시 |
- | 화면 왼쪽 정렬 |
0 | 빈칸에 0을 채움 |
(4) 정수형 자릿수 지정
- 정수형 형식: %(+ / -) (0) (전체 자릿수) d
- 데이터 값: 1234
자료형 | 사용 예 | 화면출력 | 설명 |
정수형 | %d | 1234 | 왼쪽 정렬됨 |
%6d | 1234 | 자릿수를 지정하면 오른쪽 정렬됨 | |
%+d | +1234 | +기호는 부호(+ / - )가 표시됨 | |
%+6d | +1234 | +기호와 자릿수가 지정됨 (부호표시, 오른쪽 정렬) | |
%06d | 001234 | 0기호는 빈자리에 0을 채움 |
(5) 실수형 자릿수 지정
- 실수형 형식: %(+ / -) (0) (전체 자릿수.소수점 자릿수) f
- 데이터 값: 12.34
자료형 | 사용 예 | 화면출력 | 설명 |
실수형 | %f | 12.340000 | 소수점 6자리까지 나타남 |
%7.1f | 12.3 | 전체 7칸, 소수점 이하 1칸 표시, 오른쪽 정렬 | |
%+7.2f | +12.34 | 전체 7칸, 소수점 이하 2칸 표시, 오른쪽 정렬, 부호표시 (+ 기호 사용) | |
%7.3f | 12.340 | 전체 7칸, 소수점 이하 3칸 표시, 오른쪽 정렬 | |
%07.2f | 0012.34 | 전체 7칸, 소수점 이하 2칸 표시, 오른쪽 정렬, 빈칸은 0으로 채움 |
(6) 문자열 자릿수 지정
- 문자열 형식: % (-) (전체 자릿수) s
- 데이터 값: " C Program"
자료형 | 사용 예 | 화면출력 | 설명 |
문자열 | %s | C Program | 문자열 크기만큼 출력 |
%10s | C Program | 10칸 중 오른쪽 정렬 | |
%-10s | C Program | 10칸 중 왼쪽 정렬 (- 기호 사용) |
3) 제어문자
(1) 화면에 내용을 출력 시 특별한 동작을 할 수 있음
(2) 역슬래쉬( \ )로 시작됨 (화면에는 ₩로 표시됨)
제어문자 | 설명 |
\n | 줄 바꿈 |
\t | Tab키 동작 |
\' | 작은 따옴표 ( ' ) 출력 |
\" | 큰 따옴표 ( " ) 출력 |
\\ | 역슬래쉬( \ ) 출력 |
\a | 삑~ 소리남 |
\b | 백스페이스키 동작 |
\f | 한 페이지 이동 |
\r | 현재 줄 첫 칸으로 커서이동 |
4) printf( ) 함수 활용하기
int total = 100;
printf("합계는 %d\n", total);
- int total = 100; : int 형 변수 total 선언 후 100을 저장
- %d, total: total 변수의 값 100이 %d 형식 지정자에 대입됨
- \n: 제어문자 (줄바꿈 문자)
- 실행화면 : 합계는 100
> printf( ) 함수 활용하기 실습
#include <stdio.h>
int main()
{
printf("자료형과 변수를 이용한 printf() 함수 연습 프로그램\n");
// 정수형
short short_value = 100;
int int_value = 1234;
long long_value = 300L;
unsigned int uint_value = 400u;
printf("short=%d, int=%d, long=%ld, unsigned int=%u\n", short_value, int_value, long_value, uint_value);
printf("8진수=%o, 16진수=%x\n", short_value, short_value);
printf("%d\n", int_value);
printf("%6d\n", int_value);
printf("%+d\n", int_value);
printf("%+6d\n", int_value);
printf("%06d\n", int_value);
//실수형
float float_value = 12.34f;
double double_value = 123.456f;
printf("float=%f, double=%lf\n", float_value, double_value);
printf("%f\n", float_value);
printf("%7.1f\n", float_value);
printf("%+7.2f\n", float_value);
printf("%7.3f\n", float_value);
printf("%07.2f\n", float_value);
//문자형
char char_value_1 = 65;
char char_value_2 = 'B';
printf("char = %c, char =%d\n", char_value_1, char_value_2);
//문자열
char* string_value = "C Program";
printf("%s\n", string_value);
printf("%10s\n", string_value);
printf("%-10s\n", string_value);
}
/*
자료형과 변수를 이용한 printf() 함수 연습 프로그램
short=100, int=1234, long=300, unsigned int=400
8진수=144, 16진수=64
1234
1234
+1234
+1234
001234
float=12.340000, double=123.456001
12.340000
12.3
+12.34
12.340
0012.34
char = A, char =66
C Program
C Program
C Program
*/
> 표준 입력 함수 이해하기
1) scanf_s( ) 함수란?
- 데이터를 표준 입력 (키보드)에서 입력 받을 때 사용하는 함수
scanf_s(" A ", B , C );
- A
: 입력할 데이터의 자료형에 맞는 형식 지정자
: printf( ) 함수에서 사용한 형식지정자와 동일
- B
: 형식지정자의 개수 만큼의 변수 (콤마로 구분)
: 변수 이름 앞에 & 기호를 붙임
- C
: 형식지정자 개수 만큼의 변수 자료형의 크기
: sizeof( ) 함수 이용
: 정수, 실수 자료형을 입력 받을 때는 생략 가능
2) sizeof( ) 함수란?
- 변수, 상수값, 자료형에 대한 자료형의 크기를 반환해 주는 함수
sizeof( A );
- A
: 변수, 상수값, 자료형
int size = sizeof(int);
printf("size=%d\n", size);
printf("size=%d\n", sizeof(int));
printf("size=%d\n", sizeof(size));
printf("size=%d\n", sizeof(123));
* 실행화면
size = 4 (동일)
3) scanf_s( ) 함수 사용 방법
(1) 저장할 변수 선언 필요
(2) sizeof( ) 함수
- 정수 또는 실수 : 생략 가능
- 문자 또는 문자열 : 반드시 사용
(3) 형식지정자
- 정수 : %d
- 실수 : %f
- 문자 : %c
- 문자열 : %s
#include <stdio.h>
int main()
{
int input;
scanf_s("%d", &input, sizeof(input));
}
- int input; : 정수값을 저장하기 위한 변수 선언
- %d : 정수값을 입력받기 위한 형식지정자
- &input : 정수값을 입력받기 위한 변수 지정, & 를 변수 이름 앞에 붙여줌
- sizeof() : 정수값을 입력받기 위한 자료형 크기 지정
- sizof(input) : 변수 input, 자료형 int, 임의의 상수값 123 모두 사용가능
> scanf_s( ) 함수 활용하기 실습
#include <stdio.h>
int main()
{
int int_input;
printf("Input int > ");
scanf_s("%d", &int_input);
printf("int = %d\n", int_input);
float float_input;
printf("Input float > ");
scanf_s("%f", &float_input);
printf("float = %f\n", float_input);
getchar();
char char_input;
printf("Input char > ");
scanf_s("%c", &char_input, sizeof(char));
printf("char = %c\n", char_input);
char char_string[20];
printf("Input String > ");
scanf_s("%s", &char_string, sizeof(char_string));
printf("string = %s\n", char_string);
}
/*
Input int > 123
int = 123
Input float > 123.456
float = 123.456001
Input char > a
char = a
Input String > programming
string = programming
*/
< 프로그램 작성 >
다음 소스 파일을 비주얼스튜디오에서 작성하고 실행하시오
: 프로그램 내용 : 3개의 정수를 입력받아서 출력하는 프로그램
#include <stdio.h>
int main()
{
int int_1, int_2, int_3;
printf("정수값 3개를 입력하세요 >\n");
scanf_s("%d %d %d", &int_1, &int_2, &int_3);
printf("첫번째 입력값은 %d\n", int_1);
printf("두번째 입력값은 %d\n", int_2);
printf("세번째 입력값은 %d\n", int_3);
}
/*
정수값 3개를 입력하세요 >
12
13
14
첫번째 입력값은 12
두번째 입력값은 13
세번째 입력값은 14
*/
> 문자 활용하기
① 주석문 이해하기
1) 주석문이란?
(1) 프로그램 소스에 대한 설명을 표기하는 문장
(2) 프로그램 실행결과에 영향을 주지 않음
2) 사용 목적
- 프로그램 소스에 설명을 표기하여 문서화 작업
- 프로그램 디버깅 시 테스트 목적으로 사용
3) 주석문의 종류
- 한줄 주석문: //
- 여러줄 주석문: /* */
② 문자입력 활용하기
1) 문자 입력 방법
(1) scanf_s( ) 함수를 이용하는 방법
- 문자를 입력하고 엔터를 입력해야 함
- 엔터를 입력함으로써 엔터값이 다음 문자 입력시 영향을 줌
char ch_1, ch_2;
scanf_s("%c", &ch_1);
scanf_s("%c", &ch_2);
* 연속으로 scanf_s() 함수를 이용하여 문자를 입력받음
- 입력 받은 문자는 ch_1 에 저장됨
- ch_1 입력을 위해 입력했던 엔터값이 ch_2 에 저장됨
(2) getchar( ) 함수를 이용하는 방법
- scanf_s () 함수의 문자입력 문제 해결
- 엔터 입력 없이 문자를 입력 받는 함수
char ch_1, ch_2;
scanf_s("%c", &ch_1);
getchar();
scanf_s("%c", &ch_2);
* getchar( ) 함수에서 엔터 값을 입력 받아서 처리
2) 문자열 입력 방법
(1) 문자열은 문자가 여러 개 모여 있는 것
(2) 문자열 자료형은 제공되지 않음
(3) 문자열 자료 표현 방법
- 배열: 동일한 자료형 여러 개를 묶어서 표현
- 포인터: 컴퓨터 메모리 주소를 이용
(4) 배열을 이용한 문자열 표현
- 문자열의 문자 개수를 미리 정해야 함
- 문자열 끝에는 항상 널(Null) 값 ('\0') 이 자동으로 추가됨
- 문자열의 문자 개수에 1개를 추가해야 함
char string[10] = "c_program";
'c' | '_' | 'p' | 'r' | 'o' | 'g' | 'r' | 'a' | 'm' | '\0' |
* 문자열 마지막에 Null 값 자동입력됨
#include <stdio.h>
int main()
{
char string[10];
scanf_s("%s", string, sizeof(string));
printf("%s", string);
return 0;
}
③ 문자 활용하기 실습
#include <stdio.h>
/*
이 프로그램은 C 프로그램이다.
작성자 : Rogue
일자 : 2022년 08월 02일
*/
int main()
{
// 한 줄 주석문입니다.
// 문자입력
char ch_1, ch_2;
printf("scanf_s() ch1 = ");
scanf_s("%c", &ch_1, sizeof(char));
getchar();
printf("scanf_s() ch2 = ");
scanf_s("%c", &ch_2, sizeof(char));
getchar();
printf("scanf_s() ch_1 = %c, ch_2 = %c\n", ch_1, ch_2);
printf("getchar() ch1, ch2 = ");
ch_1 = getchar();
ch_2 = getchar();
printf("getchar() ch_1 = %c, ch_2 = %c\n", ch_1, ch_2);
char string[10];
printf("string[10] = ");
scanf_s("%s", string, sizeof(string));
printf("input = %s\n", string);
}
/*
scanf_s() ch1 = a
scanf_s() ch2 = b
scanf_s() ch_1 = a, ch_2 = b
getchar() ch1, ch2 = cd
getchar() ch_1 = c, ch_2 = d
string[10] = c_program
input = c_program
*/
'Language > C & C++' 카테고리의 다른 글
C_06. Basic Grammar of Iteration Statement (0) | 2022.08.10 |
---|---|
C_05. Basic Grammar of Conditional Statement (0) | 2022.08.10 |
C_04. Basic Grammar of Logical and Conditional Operator (0) | 2022.08.09 |
C_03. Basic Grammar of Arithmetic and Relational Operator (0) | 2022.08.08 |
C_01. Intro (0) | 2022.08.01 |