작성
·
297
0
안녕하세요 교수님! 강의 4:30 에 나오는 함수입니다.
char * s_gets(char* st, int n) {
char * ret_val;
char* find;
ret_val = fgets(st, n, stdin);
if (ret_val) {
find = strchr(st, '\n');
if (find)
* find = '\0';
else
while (getchar() != '\n')
continue;
}
return ret_val;
}
예기치 못한 사용 환경을 고려하여
else
while (getchar() != '\n')
continue;
를 추가하셨다고 생각합니다. (혹시나 남아있을 buffer를 비우기 위해)
그런데 위와 같이 정의된 s_gets() 함수 실행과정 중간에 buffer 가 쌓일 가능성이 있는건가요???
s_gets() 함수를 구현하기 위하여 fgets(), strchr() 가 사용되었는데요.
이 함수들이 실행되는 과정에서 buffer에 남는 데이터가 없다면, 오히려 예기치 않은 상황을 맞이하여
else
while (getchar() != '\n')
continue;
가 실행될 때 getchar() 때문에 콘솔창에 다시 한번 데이터를 입력해야 하는 경우가 생기지 않을까 생각됩니다.
요약하면, 예기치 않은 상황을 대비하여 추가한 위의 내용이 적절한지 잘 모르겠습니다.
읽어주셔서 감사합니다.