프로그래밍2008. 4. 25. 19:01
반응형

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가 있을 경우)


프로그램 짜는 사람이 조심해서 작성해야 합니다.

반응형
Posted by pmj0403