|
> フルパスで設定されている変数から、ディレクトリとファイル名を分けて
> 取得したいのですがどうすればよいのですか。
strrchr を使うのが、よいでしょう。
#include <stdio.h>
#include <string.h>
void dir_file(const char *path, char *dir, char *file)
{
const char *p = strrchr(path, '/');
if (p == NULL) { /* '/' がない */
*dir = '\0';
strcpy(file, path);
}
else if (p == path) { /* '/' が先頭だけ */
strcpy(dir, "/");
strcpy(file, p + 1);
}
else { /* '/' が見つかった */
memcpy(dir, path, p - path); dir[p - path] = '\0';
strcpy(file, p + 1);
}
}
int main()
{
static char *info[] = {
"/aaa/bbb/ccc/ddd/dummy.txt",
"dummy.txt",
"/dummy.txt",
"/aaa/bbb/ccc/ddd/",
};
char dirname[64];
char filename[64];
int i;
for (i = 0; i < sizeof info / sizeof *info; i++) {
dir_file(info[i], dirname, filename);
printf("info = %s\n dirname = %s\n filename = %s\n",
info[i], dirname, filename);
}
return 0;
}
|