C언어 코드가 이해가 안됩니다.

C언어 코드가 이해가 안됩니다.

작성일 2019.10.17댓글 1건
    게시물 수정 , 삭제는 로그인 필요

^Z가 입력되면 파일 입출력을 중단하라는 조건을 가진 C언어 문제를 풀고 있는데
int main()
{
char a;
FILE *fp;
int i, j, k;
float ave;
fp = fopen("text.txt", "w");
for (i=0;i!=-1;) {
a = fgetc(stdin);
printf("%d", ftell(stdin));
if (feof(stdin)) {
break;
}

}
fclose(fp);
    return 0;
}
이렇게 하니깐 ^Z가 들어가니 바로 멈추는 것을 확일할 수 있었습니다. 근데 이게 어떤 원리로 작동이 멈추는지 이해가 가지 않습니다. 제가 생각하기에는 stdin이라는 임시파일에 ^Z가 저장되고 그게 feof에서 파일의 끝이라고 인식하여 멈추는 건가요??? 좋은답변 기다리겠습니다



profile_image 익명 작성일 -

stdin 은 콘솔 입력입니다. 사용자의 키보드가 눌렸을때 stdin 버퍼에 아스키 문자가 들어갑니다.

그중에 CTRL과 함께 눌렀을때 넣어주는 문자가 0~31까지 있고 제어 문자라고 합니다.

https://www.commfront.com/pages/ascii-chart

CTRL_Z 에 해당하는 아스키26 문자는 옛날 OS에서 End of File 문자로 사용되었습니다.

이제 파일에는 사용되지 않지만 C언어의 feof() 함수가 콘솔 입력 버퍼에서 26을 받으면 참을 반환합니다.

즉, 키보드에서 ctrl과 z 신호가 함께 오면 운영체제는 아스키26 문자를 stdin 에 넣어주고 feof 에 의해 검사되어 루프를 나갈수 있게된겁니다.

C언어 코드가 이해가 안됩니다.

^Z가 입력되면 파일 입출력을 중단하라는 조건을 가진 C언어 문제를 풀고... 근데 이게 어떤 원리로 작동이 멈추는지 이해가 가지 않습니다. 제가...

하노이탑 c언어 이해가 안됩니다.

... (아래의 코드는 전신이 다 있습니다 실행 가능한 코드에서 이해가 안 가는... 정말 이해가 하나도 안됩니다. 제발 저좀 도와주세요..ㅠㅠ 하노이 탑 문제에서...

C언어 순환 코드 오류 관련 질문

C언어로 쉽게 풀어쓴 자료구조 책 2장 순환 연습문제 13번... 짠 코드인데, 오류가 납니다. 특히 밑에 c2144라며 생긴 오류가 특히 이해가 안됩니다 어떻게 해결해야 할까요?...

선택정렬 프로그래밍 c언어

프로그래밍 코드가 이해가 안됩니다.. 특히 초록색으로 줄 그은 부분이 이해가 안가요 네, 안녕하세요.. 교재 보다 더 나은 설명이 될 지 모르겠으나. 일단 설명드려 볼께요.....

C언어 코드만들기 질문

코드가 왜 이렇게 나오는지 이해가 안됩니다 7. if(a > b){ int tmp = a; a = b; b = tmp; } 위 코드는 두 변수의 값을 바꿀 때 자주 사용되는 코드입니다. a = 10, b = 5라고 했을 때...

배열의 이해가 정말 안됩니다.. 다들...

... 이렇게 코드가 작성됬을 때 , p에 들어있는 값은... 하면 안됩니다. 초보자들이 C언어의 포인터 파트를 이해하기에는 상당히 어려운 파트입니다. 여기에...

C언어 반복문 소수 나열하는 코드

... 출력하는 코드를 짜는 문제입니다. 정수가 소수가 되려면 1과 자기자신만을... for문 안에 중첩으로 들어간 for문에서 i<j 부분이 잘 이해가 안됩니다.. 알기...