C언어에서 문자열포인터내의 문자를 검색하는 함수에 대하여
글쓴이: oneday / 작성시간: 목, 2004/02/26 - 7:26오후
int strcnt(char *str, int dele) { int cnt=0; while(*str) { if (*str == dele) { cnt++; } } return cnt; }
위 코드는 C 뒤적거리다가 발견한 겁니다.
지정한 문자열에 대해서 해당하는 문자가 몇개 있는지 세는 함수라고 하는데..
이게 실제로 안돌아가더군요. 그냥 무한루프로 빠져버립니다.
호출할때에는
char *szBuffer[]="a|b|c|d"; char cTok='|'; int nTok=0; nTok=strcnt(szBuffer, cTok);
이렇게 하면 되는데.. 제가 아직 실력이 부족해서.. 이해가 안됩니다.
*str==dele 이게 되는건가? ㅡㅡ??????
그냥 무한루프로 계속 돌아버리니....
그리고 char로 선언해놓고 넘길땐 int로 받더군요..
이건 대강 알겠는데 함수내의 로직은 도저히 모르겠습니다.
알려주시면 감사하겠습니다.
Forums:
char *szBuffer[] = "a|b|c|d" 를 char szB
char *szBuffer[] = "a|b|c|d" 를 char szBuffer[] = "a|b|c|d" 로 바꿔보세요.
[code:1] while(*str) 
을
로 바꿔야 될 것 같네요.
[code:1]char *szBuffer[] = &qu
아.. 제가 실수 했네요... char szBuffer로 했습니다. ^^
그리고 str++을 추가하니까.. 제대로 돌아가네요..
훔훔.... 역시 C언어가 좀 짜증나긴 하지만..
재미있네요..
빡빡하다고 생각한부분도 있지만 유연하다고 생각되는 부분도 있으니...
참.. 뭐라 할말이 없습니다. 일단 해보자는 말 밖에.. ^^
답변 주신 두분께 감사드립니다.
댓글 달기