擬似lsの実装
Posted feedbacks - C
コメントといえばCで文字列処理をかくとポインタ演算だらけになるなあ、ということくらいか。
あとリスト処理が面倒・・・。
※リストの最後にNULLターミネータを付加
※結果はstdoutにしちゃいました
あとリスト処理が面倒・・・。
※リストの最後にNULLターミネータを付加
※結果はstdoutにしちゃいました
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h>
#include <string.h>
#define PATH_MAX 256
const char *pathList[] = {"aaa/bbb", "aaa/ccc", "aaa/ddd/eee", "bbb/ddd/eee", NULL};
void ls(const char **list, const char *dir){
char buf[PATH_MAX], *p;
size_t dirlen = strlen(dir);
while(*list){
if(strncmp(*list, dir, dirlen) == 0){
strcpy(buf, *list + dirlen);
p = buf;
while(*p){
*(p+1) = (*p == '/') ? '\0' : *(p+1);
p++;
}
puts(buf);
}
list++;
}
}
int main(){
ls(pathList, "aaa/");
putchar('\n');
ls(pathList, "aaa/ddd/");
return 0;
}
|


ところてん
#4212()
Rating1/3=0.33
[ reply ]