나의 작은 valley
[C언어] 입력 스트림 본문
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
'Computer Science > [C언어] 문법 정리' 카테고리의 다른 글
[C언어] 메모리 레이아웃 (0) | 2022.11.18 |
---|---|
[C언어] put()함수 소개 (0) | 2022.11.18 |
[C언어] 입력 확인 (0) | 2022.11.17 |
[C언어] 숫자와 문자를 섞어서 입력받기 (0) | 2022.11.17 |
[C언어] 입출력 방향 재지정 (0) | 2022.11.17 |
Comments