언어/C

[코딩자율학습] 3일차 입력과 출력

홍시_코딩기록 2024. 3. 6. 22:23

📌 printf()로 출력

#include <stdio.h>

int main(void) {
	int add = 3 + 7;
	printf("3 + 7 = %d\\n", add);
	printf("%d + %d = %d\\n", 1, 2, 3 + 4);
	printf("%d x %d = %d\\n", 1, 2, 3 * 4);
	return 0;
}

//실행결과 3+7=10     1+2=7    1x2=12
  • %d 즉 정수형 값을 3번 받겠다는 의미
  • 쉼 표 뒤에 있는 값이 순서대로 들어감
  • 곱하기도 가넝

 

 

📌 scanf()로 입력받기

더보기

⚠️ scanf( )와 scanf_s( )

기본 표준 입력 명령어는 scanf( ) 하지만 scanf( ) 함수를 사용하면 입력크기에 제한이 없어서 지정된 크기보다 더 많은 양을 입력 받는 버퍼 오버플로라는 메모리 문제가 발생할 수 있음. scanf_s( ) 는 이 점을 보완해 함수가 입력값의 크기를 지정함.

 

 

숫자 입력받기

#include <stdio.h>

int main(void) {
	int input;
	printf("값을 입력하세요: \\n");
	scanf_s("%d", &input);
	printf("입력값 : %d\\n", input);
	return 0;
}

//실행 결과 -> 값을 입력하세요: 2000    입력값 2000
  • scanf_s( ) : 서식지정자 %d는 정수형 값을 입력받겠다는 의미, 쉼표 뒤에는 입력받은 값을 저장할 위치를 넣음.
  • &input : &는 메모리의 주소를 나타낼 때 사용함. 즉 &input은 입력값을 저장할 위치

 

 

문자형 변수로 입력받기

문자는 ‘문자’와 ‘문자열’로 나뉨

문자: 한 글자

문자열: 여러 문자의 모임

char 변수명 = '값';
  • 문자형 변수를 선언할 때는 char라는 자료형을 씀.
  • 값이 문자일 때는 ‘’ 작은따옴표 사용.

 

 

문자 출력

#include <stdio.h>

int main(void) {
	char c = 'A';
	printf("%c\\n", c);
	return 0;
}

//실행결과 -> A

 

 

문자열 출력

#include <stdio.h>

int main(void) {
	char str[256];
	scanf_s("%s", str, sizeof(str));
	printf("%s\\n", str);
	return 0;
}

//실행결과 -> (입력텍스트)  ( 입력텍스트)   -> 입력텍스트 그대로 출력
  • str[256] : c와 같은 문자형 변수 256개를 연속으로 만든다는 의미.
  • %s : 문자열을 입력받거나 출력할 때 사용하는 서식 지정자
  • 배열일 때는 & 표시 없이 변수명(str)만 작성

 

 

sizeof(변수명/배열명/자료형)
  • scanf_s( )로 문자열을 입력받으려면 크기를 명시해야 함. (scanf()와 차이)
  • str은 256개의 공간이기 때문에 256개보다 더 큰 문자가 들어오면 문제가 발생함.
  • 그래서 sizeof 연산자를 써서 str 256개 이내의 문자만 받겠다고 알려줘야함.

 

 

더보기

⚠️ scanf_s( ) 함수의 경고 메세지

unsigned int가 필요하다는 경고 메세지가 나옴. sizeof 연산자로 알아낸 변수 크기에 해당하는 값의 형태(unsigned_int64)가 기대한 것(unsignedint)과 다르다는 뜻. 경고 나와도 프로그램 동작에는 문제 없음.

경고를 없애고 싶다면 2가지 방법 scanf_s("%s", str, (unsigned int) sizeof(str)); // 형변환 scanf_s("%s", str, 256); // 문자형 변수 크기 직접 입력

 

 

 

💡 문자열 2개를 입력받아 출력하는 코드를 작성해보세요.

#include <stdio.h>

int main(void) {
	char str1[256], str2[256];
	printf("첫번쨰 입력하쇼");
	scanf_s("%s", str1, sizeof(str1));
	printf("두번쨰 입력하쇼");
	scanf_s("%s", str2, sizeof(str2));
	printf("첫번쨰 %s\n", str1);
	printf("두번쨰 %s\n", str2);

	return 0;
}