https://www.acmicpc.net/problem/11718
EOF 문제
EOF는 End Of File 이라는 뜻이며, 파일의 끝, c언어에서는 EOF를 파일의 끝이라고 인식한다.
EOF는 -1의 값을 가지고 있다.
#include <stdio.h>
int main()
{
char s;
while(scanf("%c",&s) != EOF)
{
printf("%c",s);
}
return 0;
}
EOF 선언이 될 때까지 입력을 계속 받겠다는 뜻이 된다.
문자를 하나씩 받아오고, 받은 문자를 출력한다.
의문점
왜 WHILE문에는 &s고, 프린트문에는 s지?
gpt에 물어보니 이런 답변을 주었다.
C 언어에서 scanf 함수에 문자를 입력받을 때 변수의 주소를 전달해야 합니다. 이는 변수에 직접 값을 저장하는 것이 아니라 변수의 주소에 값을 저장하기 때문입니다. 그래서 scanf 함수의 인자로 변수 s의 주소인 &s를 전달합니다.
그러나 printf 함수는 단순히 변수의 값을 출력하는 것이기 때문에 주소를 전달할 필요가 없습니다. 따라서 printf 함수에는 변수 s의 값을 직접 전달합니다.
따라서 while 루프의 조건에서는 &s를 사용하여 변수 s의 주소를 전달하고, printf 함수에서는 s를 사용하여 변수 s의 값을 출력합니다.
'👩💻 알고리즘 > 🔠 C' 카테고리의 다른 글
[한빛미디어 혼공학습단_혼공C] 6주차 스터디 ch9 포인터 (0) | 2024.02.18 |
---|---|
백준 5597 (0) | 2024.02.11 |
[한빛미디어 혼공학습단_혼공C] 5주차 스터디 ch8 배열 (0) | 2024.02.07 |
백준 10951 (0) | 2024.02.04 |
백준 11382 (0) | 2024.02.03 |