basename
功能:
basename()
函数用于获取路径中的文件名部分,即去除路径中的目录部分。
函数原型:
char *basename(char *path);
参数说明:
path
: 指向以null结尾的字符串,表示文件路径。
用法示例:
#include <stdio.h>
#include <libgen.h>
int main() {
char path[] = "/home/user/example.txt";
char *base = basename(path);
printf("Base name: %s\n", base);
return 0;
}
strrchr
功能:
strrchr()
函数在给定字符串中从后向前查找指定字符,并返回最后一个匹配的字符的指针。
函数原型:
char *strrchr(const char *str, int character);
参数说明:
str
: 指向以null结尾的字符串。character
: 要查找的字符。
用法示例:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello world";
char *ptr = strrchr(str, 'l');
if (ptr != NULL)
printf("Last occurrence of 'l' at position: %ld\n", ptr - str);
else
printf("Character not found\n");
return 0;
}
asprintf
功能:
asprintf()
函数用于根据格式化字符串创建动态分配的字符串,并将结果存储在提供的指针中。
函数原型:
int asprintf(char **strp, const char *format, ...);
参数说明:
strp
: 用于存储格式化字符串的指针的地址。format
: 格式化字符串。...
: 可变数量的参数,用于填充格式化字符串中的占位符。
用法示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
char *str;
int len = asprintf(&str, "Value of pi: %.2f", 3.14159);
printf("Formatted string: %s\n", str);
printf("Length of formatted string: %d\n", len);
free(str);
return 0;
}
glob
功能:
glob()
函数用于根据提供的匹配模式搜索文件系统中的文件。匹配结果存储在提供的 glob_t
结构中。
函数原型:
int glob(const char *pattern, int flags, int (*errfunc) (const char *epath, int eerrno), glob_t *pglob);
参数说明:
pattern
: 匹配模式字符串。flags
: 匹配选项标志。errfunc
: 错误处理函数。pglob
: 指向glob_t
结构的指针,用于存储匹配结果。
用法示例:
#include <stdio.h>
#include <glob.h>
int main() {
glob_t results;
int status = glob("/usr/bin/*", 0, NULL, &results);
if (status == 0) {
printf("Matched files:\n");
for (int i = 0; i < results.gl_pathc; ++i) {
printf("%s\n", results.gl_pathv[i]);
}
globfree(&results);
} else {
printf("Error occurred\n");
}
return 0;
}
scandir
功能:
scandir()
函数用于扫描指定目录中的文件,并将结果存储在提供的指针数组中。它还可以通过可选的过滤器和比较器来筛选和排序结果。
函数原型:
int scandir(const char *dir, struct dirent ***namelist, int (*filter)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **));
参数说明:
dir
: 指定要搜索的目录路径。namelist
: 存储结果的指针数组。filter
: 可选的过滤函数,用于筛选结果。compar
: 可选的比较函数,用于对结果进行排序。
用法示例:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main() {
struct dirent **namelist;
int n = scandir(".", &namelist, NULL, alphasort);
if (n >= 0) {
printf("Files in current directory:\n");
for (int i = 0; i < n; ++i) {
printf("%s\n", namelist[i]->d_name);
free(namelist[i]);
}
free(namelist);
} else {
printf("Error occurred\n");
}
return 0;
}
strtoul
功能:
strtoul()
函数将字符串表示的数字转换为无符号长整型数。它可以指定转换的基数(如十进制、十六进制等),并且可以检测并返回转换结束的位置。
函数原型:
unsigned long int strtoul(const char *nptr, char **endptr, int base);
参数说明:
nptr
: 指向要转换的字符串。endptr
: 用于存储转换结束位置的指针。base
: 进制基数。
用法示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "42";
char *end;
unsigned long value = strtoul(str, &end, 10);
printf("Parsed value: %lu\n", value);
printf("End pointer: %s\n", end);
return 0;
}
strdup
功能:
strdup()
函数用于复制给定的字符串,并返回一个新的动态分配的字符串副本。
函数原型:
char *strdup(const char *str);
参数说明:
str
: 要复制的字符串。
用法示例:
#include <stdio.h>
#include <string.h>
int main() {
const char *source =
"Hello, world!";
char *copy = strdup(source);
printf("Copied string: %s\n", copy);
free(copy);
return 0;
}