在我的程序中,我使用 basename 函数来获取分区。首先,我写一个这样的 if 语句:
if (!strncmp(buf,
basename("/dev/mmcblk0p3"),
strlen(basename("/dev/mmcblk0p3"))) {
ret = 1;
} else {
ret = 0;
}
buf 指向字符串 "mmcblk0p3" ,但是 ret = 0,使用 gdb,我发现 basename("/dev/mmcblk0p3") 返回了一个奇怪的字符串,但是当我像这样更改程序时:
char *p = NULL;
p = basename("/dev/mmcblk0p3");
if (!strncmp(buf, p, strlen(p)) {
ret = 1;
} else {
ret = 0;
}
ret 为 1,程序运行正常。有什么区别?basename 不能这样使用?编译环境是armel7v/gcc。