나의 작은 valley

[C언어] 입력 스트림 본문

Computer Science/[C언어] 문법 정리

[C언어] 입력 스트림

붕옥 아이젠 2022. 11. 18. 09:09
728x90

예제 코드)

#include <stdio.h>

int main()
{
	char str[255];
	int i, i2;
	double d;

	scanf("%s %d %lf", str, &i, &d);
	printf("%s %d %f\n", str, i, d);

	// see the difference

	scanf("%s %d %d", str, &i, &i2);
	printf("%s %d %d\n", str, i, i2);

	char c;
	while ((c = getchar()) != '\n')
		putchar(c);
	printf("\n");

	return 0;
}

출력)

hello 123 3.14
hello 123 3.140000
hi 456 3.14
hi 456 3
.14

>> 똑같은 입력이라도 받는 데이터의 type에 따라 출력이 달라진다.

 

 

3.14가 입력이 된 경우 해석)

scnaf()가 3을 읽어들여 숫자로 인식하고 .을 만나면 아 더이상 숫자를 입력할 생각이 없구나! << 로 여기고 더이상 입력을 받지 않는다. 따라서 자연스럽게 .14부분은 buffer에 남게 되고 버퍼를 출력하는 부분에서 .14가 출력된 것이다.

 

 

cf) getchar()은 빈칸도 입력으로 받아들이고, scanf()는 빈칸이 나오면 아, 사용자가 한가지 항목을 다 입력했구나로 받아들임.

#include <stdio.h>

int main()
{

	char c;
	while ((c = getchar()) != '\n')
		putchar(c);
	printf("\n");

	return 0;
}

출력)

hi 나는 123 천재
hi 나는 123 천재

>> 실로 그러하다.

 

 

 

conclusion) 우리가 입력한 내용이 프로그램으로 들어갈 때 string으로 들어가지만 내부적으로 분석하고 변환하는 과정을 거치기에 숫자,등 다른 데이터형으로 출력을 받을 수 있는 것이다. 

728x90
Comments