문자열 자르기 ...

Sailor_moon의 이미지

	char *infoName = (char*)malloc(strlen(argv[1])); 	//Dynamic memory allocation.r
	strncpy(infoName, argv[1], strlen(argv[1]) );		//copied a string to fileName

이렇게 입력을 받았습니다 ... in C language ...
문자열을 구분하려 합니다.

infoName 에 들어온 문자열을 "/"를 기준으로 잘라내고 싶다면 어떻게 해야하죠?

ex)...
argv[1] 가 img/*.jpg -> img 와 *.jpg ...
/ 를 기준으로 잘라낸 앞부분을 새로운 pointer 에 넣으려합니다.

pointer 형으로 되어있어서 그런지 , infoName[3] 이런식으로는 접근이 안되더군요...

익명 사용자의 이미지

string.h 헤더의 strnchr 함수를 사용해보세요.

Fe.head의 이미지

이런걸 원하시는건가요?

$ cat basename.c
#include <stdio.h>
#include <libgen.h>
 
int main(int argc, char * argv[])
{
 
        char *dirc, *basec, *bname, *dname;
 
        dirc = strdup(argv[1]);
        basec = strdup(argv[1]);
        dname = dirname(dirc);
        bname = basename(basec);
        printf("dirname=%s, basename=%s\n", dname, bname);
 
        free(dirc);
        free(basec);
 
        return 0;
}
 
$ ./basename img/001.jpg
dirname=img, basename=001.jpg
 
$ ./basename /usr/share/fonts/corefonts/times.ttf
dirname=/usr/share/fonts/corefonts, basename=times.ttf

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

익명 사용자의 이미지

strtok()

사용해보세요.