반응형
fgets함수로 입력받을시 엔터키 지우는 방법
1. 함수를 이용하는 방법
fgets( buf, size, stdin ); 으로 입력을 받을 경우 size 크기를 넘지 않는 경우 엔터값이 포함이 됩니다.
해서 입력받은 뒤 엔터값을 지워주시면 됩니다.
char *deleteEnter( char *str )
{
char *p = str;
while(*p) p++;
p--;
if (*p == '\n' ) *p = '\0';
return str;
}
출처 : http://cafe.naver.com/cafec.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=38887
2. 더 간단한 방법
예를 들어 temp1 에 fgets()를 통해 "hello" 라는 문자열을 입력되었다면
실제 temp1에는 "hello\n\0" 라는 값이 들어가겠죠.
여기서 '\0' 이 문자열의 끝을 나타내는 값입니다.
그러므로
temp1[strlen(temp1)-1] = '\0';
와 같이 '\n' 자리에 '\0'을 넣어 버리면 됩니다.
현재 입력받은 문자열의 끝이 '\n' 이 없다면 물론 문제가 되겠죠.
(예를 들어 파일의 끝라인에 '\n' 없이 eof가 있을 경우)
프로그램 짜는 사람이 조심해서 작성해야 합니다.
반응형
'프로그래밍' 카테고리의 다른 글
exit() 함수의 뜻 (0) | 2008.04.25 |
---|---|
scanf함수로 문자열 입력받는 방법 (0) | 2008.04.25 |
vc++ 6.0 에서 gotoxy(), clrscr() 사용하는방법 (0) | 2008.04.25 |
이중 포인터형의 동적메모리 할당 해제 (0) | 2008.04.25 |
2차 배열 초기화 (0) | 2008.04.25 |