c언어에서 문자열이 히든(숨겨) 질 수도 있습니까?
글쓴이: sh0ut / 작성시간: 목, 2006/10/26 - 12:57오후
문자열에서 숫자만 배열에 뽑아낼려고 isdigit()함수를 사용했는데요
----------------
1line sadfsdf
2line dfsafdsf
3line 1234
4line 4672
----------------
이렇게 4라인으로 1, 2번째 라인은 문자열 3, 4번째 라인은 숫자로된 문자열로 되어 있습니다.
그런데.. isdigit() 함수를 통해서 숫자로된 문자열만 뽑아냈는데.. printf() 로 결과를 보니...
----------------
1line
2line
3line 1234
4line 4672
----------------
이렇게 문자열은 보이지 않는데.. 자리를 차지하고 있더군요 -_-
혹시 공백이나 탭이나 개행문자가 들어가 있을 위험성이 있어서 isspace() 함수를 통해서 결과를 보려 했으니 해당사항이 없네요 ㅡㅡ;;;
이렇게 아무내용도 없는 빈 공간을 차지하는 부분을 어떻게 빼고 원하는 결과만 출력 할 수 있을까요??
isdigit() 함수가 아닌 다른 방법 강구해봐야할까요?;;;
Forums:
소스코드를
소스코드를 보여주셔야 얘기가 될 것 같군요.
제가 대충 이해한
제가 대충 이해한 바에 의하면,
isdigit함수는 숫자인지 아닌지 체크하는 함수인데
문자열을 a에서 b로 복사하면서 복사과정에서 isdigit로 체크를 해서
b로는 숫자만 복사되게 하신 것 같네요.
(출력할 때 isdigit를 사용한게 아니라는 근거는 위의 printf 이야기에 있습니다.
보통 출력할때 isdigit를 사용하려면 putchar가 필요하지요;;;)
이런 함수를 사용해 보시는게 어떨까요?
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
무엇보다, 문자열이
무엇보다, 문자열이 숨겨진게 아니라 문자열[0]이 NUL이겠죠.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
> for(i = 0; i <
> for(i = 0; i < strlen(string); i++) if(isdigit(string[i])) putchar(string[i]);
>
돼지군님, char 가 signed char 와 동일한 표현 범위를 갖고, string[i] 가
음수를 갖는 경우가 되면 큰일나요!! ;-)
--
Jun, Woong (woong at icu.ac.kr)
Web: http://www.woong.org (서버 공사중)
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
댓글 달기