STRCHR(3) 리눅스 프로그래머 매뉴얼 STRCHR(3)
이름
strchr, strrchr - 문자열에서 문자를 찾는다.
사용법
#include <string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
설명
strchr() 함수는 문자열 s에서 문자 c가 처음 발견된 곳의포인터를 반환한다.
strrchr() 함수는 문자열 s에서 문자 c가 마지막으로 발견된곳의 포인터를 반환한다.
반환값
strchr() 와 strrchr() 함수는 일치하는 문자에 대한 포인터를반환하거나 문자가 발견되지 않는다면 NULL을 반환한다.
호환
SVID 3, POSIX, BSD 4.3, ISO 9899
관련 항목
index(3), memchr(3), rindex(3), strpbrk(3), strsep(3), strspn(3), strstr(3), strtok(3)
역자
정강훈 <skyeyes@soback.kornet.net>, 2001년 2월 24일
1993년 4월 12일 STRCHR(3)
ls *.mp3
ls *.mp3
life is only one time
답변 감사합니다만...
그건 알고있구요.. strcmp로 비교하려고 하는데
소스코드 내에서 어떻게 해야하는지 궁금하거든요
현재 이렇게 되어있습니다.
------------------------------------------
struct dirent *dirp;
if(strncmp(dirp->d_name, ".", 1)){ ... }
strncmp(dirp->d_name +
strncmp(dirp->d_name + sizeof(dirp->d_name) - 4 ),".mp3",4)
하면 안되나요 ? ^^;
또 ls를 popen으로 열어서 그 출력을 받는것도 좋고요
(타이밍 문제가 조금 있지만... --; 꽤 쓸만한 방법입니다)
FILE *list=NULL
list=popen("ls *.mp3");
do
{
if(fgets(buffer,1024,list) == NULL)
break;
// 처리 --;
}while( count < max_count);
pclose(list);
답변 정말 감사합니다 ^^
그런 방법이있었군요 왜 거기까지 생각을 못했는지 ㅡㅡ;;
그런데 sizeof로 하니까 안되더라구요 그래서 아래처럼 바꾸고 해결했습니다 ^^ 감사합니다!
아, 그리고 같으면 0을 리턴하기때문에 !를 추가했습니다. ㅋ
if(!(strncmp(dirp->d_name + strlen(dirp->d_name) - 4 ),".mp3",4))
굳이 그렇게 어렵게 할 필요가..
간단하게 이렇게 하면 될거 같은데요.
pointer = strstr(dirp->d_anme,".mp3");
if( pointer)
show();
맞습니다...
뒤부터 잘라주는 함수가 있습니다.. strstr 이 있고..
뭔가 하나 더 있습니다..
pthread 환경하에서.. 보호되는 함수인지는 잘 모르겠습니다..
strstr이라는 함수가..
strstr이라는 함수가 있었군요.. 답변 감사합니다. 방금 테스트 해보았는데
잘 동작합니다 ^^ 그런데 반환값이 뭔가요? 포인터인가??
아무튼 if문 안에 넣어서 다 해결했습니다. 좋은거 배워가네요 ^^ 감사합니다.
strchr, strrchr 도 있습니다.
문자열을 특정 문자로 구분할때 요긴합니다.
답변 감사합니다.
유용하지만 모르고있던 함수들이 너무 많네요
댓글 달기