[37일차](홍정모의따배c)입력스트림과 숫자
*본 강의수기는 교수님의 모든 ppt나 코드 화면을 붙인게 아닙니다. 따로 출처 표시나 과제표시
안한 모든 코드와 사진자료의 출처는 본 강의의 교수님 입니다.
정리는 다시한번 제가 보기위함과 어떤강의인지 알려드리는 것이고
제가 적은건 이해를 돕기 위한 부연설명과 제가 이해한 몇개의 중심적인 내용이 다소
생략이 되었습니다. 이 수기를 통해 공부하려 하지말고 흥미로운 내용이라면
'인프런- 홍정모의 따라하며 배우는c' 과정을 수강하시길 바랍니다.
scanf는 입력할때 각 자료형을 지정해주고 그자료형에 맞는 데이터를 버퍼에 입력받고 저장한다.
- 교수님코드
#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);
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 를 s와 d 그리고 lf로 받고
출력할때도 그 자료형에 맞게 입력받았다
아직 프로그램이 끝나지 않은 상태이고
두번째 입력을 기다리고 있다
여기에 똑같이 Hello 123 3.14를 입력해보자
3까지만 출력하고 그다음 .14가 \n를 만나 다음줄에 출력됐다.
첫번째출력때는
scanf("%s %d %lf", str, &i, &d);
printf("%s %d %f\n", str, i, d);
실수를 입력받아 실수자료형으로 잘 출력을 했다.
두번째 출력에는
scanf("%s %d %d", str, &i, &i2);
printf("%s %d %d\n", str, i, i2);
scanf로 입력받은 버퍼에
배열과 정수까지 올바른 정수형으로 잘 입력받았다.
그러나 scanf는 각자료형에 맞지않는 입력을 인식하면
입력이 끝났다고 인식하고 버퍼에있는것을 출력한다.
3.14를 입력했는데 정수자료형인 d는
실수에 소수점 ' . ' 를 인식하지못하고
3까지만 입력을 받고 ' . '을 만나는 순간 아, 입력이 끝났구나 하고 받아들인다.
그래서 .14는 버퍼에 남게되고
출력되며
char c;
while ((c = getchar()) != '\n')
putchar(c);
printf("\n");
남아있던 .14는 getchar를 만나 출력하게된다.