C言語関係掲示板

過去ログ

No.372.ディレクトリからファイル名を取得するには。

[戻る] [ホームページ]
No.2462

ディレクトリからファイル名を取得するには。
投稿者---はじめ(2002/08/22 17:53:45)


ディレクトリからファイル名を取得したいのですが、
ファイルのフルパスを文字列として格納し、for文で
最後から見ていき、最初に「/」が出てきた時点で、ループ
を抜けて、カウンタが回った位置から取得する方法しかない
のですか。

main() {
char buff[256] ;
char filename[64] ;
int len ;
int i ;

strcpy(buff, "/aaa/bbb/ccc/ddd/file.txt") ;
len = strlen(buff) ;

for(i=len; i>0; i--) {
if (buff[i] == '/') {
break ;
}
}

strncpy(filename,&buff[i+1],len-i-1) ;
}


No.2463

Re:ディレクトリからファイル名を取得するには。
投稿者---ともじ(2002/08/22 18:28:04)


こんにちは。

>ディレクトリからファイル名を取得したいのですが、
>ファイルのフルパスを文字列として格納し、for文で
>最後から見ていき、最初に「/」が出てきた時点で、ループ
>を抜けて、カウンタが回った位置から取得する方法しかない
>のですか。

標準関数に文字列の後ろから文字を探すstrrchrというのがあるので、
それを使ってみてはどうでしょう。

#include <stdio.h>
#include <string.h>

int main(void)
{
        char *p;
        
        p = strrchr("/aaa/bbb/ccc/ddd/file.txt", '/') ;
        printf("%s\n", p+1);
        
        return (0);
}