문제 공간 :사용자 정의의 getline() 구현 - while 루프 내부
어떻게 그것이 while ((len = _getline(line, MAXLEN)) > 0)
는 _getline(...)
증가 내부 i
을 것이라고하지만 누를 enter key
때까지 결과를 인쇄하지?
코드 예 :
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
int _getline(char s[], int max)
{
int c, i, l;
for (i = 0, l = 0; (c = getchar()) != EOF && c != '\n'; ++i) {
printf("%d\n", i);
if (i < max - 1) {
s[l++] = c;
}
}
if (c == '\n' && l < max - 1)
s[l++] = c;
s[l] = '\0';
return l;
}
int main()
{
int len;
char line[MAXLEN];
while ((len = _getline(line, MAXLEN)) > 0)
;
return 0;
}
아마도'for '루프 내부에'c! ='\ n "가 있기 때문이다. 그렇지 않으면'for 루프 '가'c! ='\ n''가 내부적으로 실행을 계속할 것이기 때문이다. 그 시점에서 프로그램은 다음 라인으로 이동하겠습니까? – dud3
커스텀'getline'은'max'에 도달 한 후에 왜 문자를 계속 읽습니까? –
파일 수준에서 밑줄로 시작하는 이름은 구현을 위해 예약되어 있습니다. 응용 프로그램 코드에서 사용해서는 안됩니다. – Olaf