scanf("형식지정자", &변수명);
사용자가 입력한 숫자를 받아서 변수에 저장해준다.


double의 경우


char 문자열의 경우
변수 옆에 대괄호를 붙이고 안에 숫자를 넣어 저장할 수 있는 메모리의 크기를 정한다.


그런데 scanf는 이렇게 문자열을 띄어 쓸 경우, 앞의 것만 접수하심

그래서 fgets(변수명, 길이, 스트림);을 사용해 데이터를 입력받는다.
stream 스트림은 데이터의 흐름을 추상화한 개념으로 데이터가 연속적으로 이동하는 경로나 채널을 의미한다고 함
스트림을 사용함으로써 데이터 처리 과정을 단순화하고 일관성을 유지할 수 있다고 함
- 추상화: 스트림은 데이터의 실제 저장 매체(예: 파일, 메모리, 네트워크 연결)로부터 데이터를 읽고 쓰는 방법을 추상화합니다. 이로 인해, 개발자는 데이터 저장 매체의 구체적인 세부 사항을 신경 쓰지 않고 데이터 처리를 할 수 있습니다.
- 순차적 접근: 스트림을 통해 데이터는 순차적으로 처리됩니다. 즉, 한 번에 하나의 데이터 요소를 읽거나 쓰며, 일반적으로 한 번 읽힌 데이터는 소비되어 다시 읽을 수 없습니다(재방문 또는 재감기 기능이 없는 스트림의 경우).
- 블로킹과 비블로킹 모드: 스트림은 데이터가 준비되지 않았을 때 동작을 중단(블로킹)하거나, 즉시 반환하여 다른 작업을 계속 수행할 수 있는(비블로킹) 방식으로 동작할 수 있습니다.
- 버퍼링: 일부 스트림은 효율성을 높이기 위해 버퍼링을 사용합니다. 버퍼링은 데이터를 임시 저장하는 메모리 영역을 사용하여, 작은 단위로 여러 번 데이터를 읽거나 쓰는 대신 큰 덩어리로 한 번에 처리할 수 있게 합니다.
stdin은 Standard Input의 약자로 표준입력을 의미한다.
stdout 표준 출력, stderr 표준 에러 등도 있음


띄어쓰기 포함 전체가 잘 출력됨
그런데 사용자가 데이터 입력 후
엔터 누를 때의 자동 개행까지 추가되어서
아래 빈 한 줄이 생김 ㅋ
아래와 같이 개행을 지워줄 수도 있다고 챗ㅈㅍㅌ가 묻지도 않았는데 알려줌
이렇게 직접 지워줘야 한다고..? 다른 함수가 있지 않을까..?
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("문자열을 입력하세요: ");
fgets(str, sizeof(str), stdin);
// 문자열 끝의 개행 문자 제거
str[strcspn(str, "\n")] = 0;
printf("입력한 문자열: %s", str);
return 0;
}
졸려서 이만.