본문 바로가기

2021 정보처리기사/참고자료: 정보처리기사

[C언어 기초] C언어 문자열, 표준 입출력 함수

728x90
반응형

#서식 문자열

이스케이프 시퀀스

종류 기능
\n  Enter (줄 바꿈)
\t  Tab (간격 띄우기)
\b  <- (커서 한 칸 이동)
\r  Home(커서 현재 행의 처음으로 이동)
\\  \ (역 슬래시 출력)

 

 

서식 지정자

종류 기능
%d  10진수
%o  8진수
%x  16진수
%u  부호 없는 정수
%lf  실수
%e  지수형태 실수
%c  문자
%s  문자열
옵션 설명
-  확보된 공간에서 왼쪽 정렬(기본값: 오른쪽 정렬)
+  숫자 앞에 부호 삽입
자연수  입력한 수 만큼 공간 확보
0  확보한 공간의 여백을 0으로 채움

 

 

 

 

 

 

 

표준 입출력 함수

1) 표준 입출력

- 키보드로 입력, 모니터로 데이터 출력

 

 

2) 입력 함수

 

✔ 한 문자 입력

getchar() : 키보드로 문자 하나 입력

 

✔ 문자열 입력

gets(문자배열) : 키보드로 문자열 입력

 

✔ 서식 문자열 입력

scanf(서식문자열 [, &변수명, &변수명, ...]) : 지정한 서식대로 키보드로부터 데이터 입력

 

 

//입력함수

#include <stdio.h>
int main()		//프로그램 시작
{

	char c;		//문자형 변수 선언
   	char s[10];		//문자 배열(10글자) 선언
   	char grade;		//문자형 변수 선언
   	double score;	//실수형 변수 선언
    
	c = getchar();	//문자 하나 입력
    	gets(s)		//문자열 입력
        		//띄어쓰기로 구분해서 점수와 학점 입력
  	scanf("%lf %c", &score, &grade);
  	return 0;	//프로그램 종료
}

 

 

3) 출력 함수

 

✔ 한 문자 출력

putchar() : 모니터로 문자 하나 출력

 

✔ 문자열 출력

puts(문자 배열) : 모니터로 문자열 출력

 

✔ 서식 문자열 출력

printf(서식 문자열 [, 변수명, 변수명, ...]): 지정한 서식대로 모니터로부터 데이터 출력

 

 

 

//출력함수

#include <stdio.h>
int main()		//프로그램 시작
{
	putchar('a');	// 문자 a 출력
	puts("hello");	// 문자열 "hello" 출력
  	 //아래와 같이 출력
 	 //점수는 4.2점
 	 //학점은 A입니다
	printf("점수는 %.1lf점\n학점은 %c입니다.", 4.2, 'A'")
	return 0;
}

 

 

 

연산자

연산자를 공부하면서 가장 중요한 것은 결과의 타입이 어떻게 나오느냐이다.

예를 들면 2+3은 5이다. 그렇다면 2+3.0 어떻게 나올까? 

정수보다는 실수가 좀 더 정밀한 표현이 가능하다. 때문에 정수와 실수를 계산하면 결과는 무조건 실수로 나타난다.

따라서 정수 5를 정수2로 나누면 실수인 2.5가 아닌 정수 2가 답이고

정수 5를 실수 2.5로 나누면 실수 2.5가 나오는 것이다. (중요한 개념)

 

 

https://baeseonha.tistory.com/m/12

 

관계 연산자를 사용하는 계산식을 조건식이라고 하며 , 이 조건식이 여럿 있을 때 각 조건식을 연결해주는 연산자를 논리 연산자라고 한다. 논리 연산자를 통해서 복수의 조건식을 어떤 식으로 판단할 지 결정하는 것이다. 논리연산자 &&, ||, ! 를 통해 조건이 모두 참이어야 하는지, 하나 이상이면 되는지 등을 확인할 수 있다. 산술 연산자와 관계 연산자는 직관적인 기호이기 때문에 설명을 생략했다.

 

 

논리연산자

연산자 계산식 설명
&& a && b a와 b 모두 참인 경우에만 참
| |  a | | b a와 b중 하나라도 참이면 참
! !a a의 결과를 반전

 

비트 연산자

비트 연산자는 2진수 자리별로 연산을 수행한다. 10진수를 2진수로 변환할 때 아래의 이미지를 떠올리면 계산이 쉽다. 어떠한 10진수 값 a를 계속해서 2로 나누어 나온 나머지 값을 0의 자리부터 차례대로 에 할당한다. 2진수는 4Byte이므로 아래 사진에서 11을 2진수로 변환하면 1011이 된다. 

 

 

 

더 간단하게는 윈도우 기본 계산기 프로그램을 켜서 계산기 타입을 프로그래머로 변환한 후, 일반적인 10진수를 입력하면 하단의 BIN 값에 이진수 변환값이 나온다.

 

 

 

이렇게 2진수로 변환된 값에 대하여 2진수 자리별로 연산을 수행하는 것이 비트연산자이다. 만약 5 & 2 를 연산하게 되면 값은 5는 (0101), 2는 (0010)으로 두 값을 연산한 값 &은 0000 이 나온다. 모든 비트가 1이 아니기 때문이다. 반대로 5 | 2로 연산하게 되면 값은 0 1 1 1이 된다. 모든 비트 중 한 비트라도 1이면 1이기 때문이다. 조금만 생각하면 간단하게 계산할 수 있다.

 

시프트는 비트가 할당된 자리를 옮겨주는 연산자이다. 만약 5 << 1 를 연산하게 되면 우선 5를 2진수로 변환한 뒤 자릿수를 좌측으로 1칸씩 더해주면 된다. (0 1 0 1) 은 각각 (2^3 + 2^2 + 2^1 + 2^0)의 자릿수이므로 5 << 1을 연산한 결과값은 (2^4 + 2^3 + 2^2 + 2^1)이 된다.

 

 

연산자 계산식 비고
& and 모든 비트가 1일 때만 1
^ xor 모든 비트가 같으면0, 하나라도 다르면1
| or 모든 비트 중 한 비트라도 1이면 1
~ not 각 비트의 부정, 0이면 1, 1이면 0
<< 왼쪽시프트 비트를 왼쪽으로 이동 (ex. a << b 는 a의 비트를 좌측으로 b만큼 이동 (2^b 증가)
>> 오른쪽시프트 비트를 오른쪽으로 이동 (ex. a >> b는 a의 비트를 우측으로 b만큼 이동 (2^b 감소)

 

 

 

 

 

 

"파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"

 

 

 

 

 

 

자료출처: 유튜브 주간컴공TV

728x90