我正在尝试学习glib / gtk。我写了一些代码,它在目录中打印文件,如果是普通文件,则分配“f”,如果是目录,则分配“d”。问题在于if。它总是得到错误的值并将“f”附加到文件名。
#include <glib.h>
#include <glib/gstdio.h>
#include <glib/gprintf.h>
int main()
{
GDir* home = NULL;
GError* error = NULL;
gchar* file = "a";
home = g_dir_open("/home/stamp", 0, &error);
while (file != NULL)
{
file = g_dir_read_name(home);
if (g_file_test(file, G_FILE_TEST_IS_DIR))
{
g_printf("%s: d\n", file);
} else {
g_printf("%s: f\n", file);
}
}
}
答案 0 :(得分:3)
g_dir_read_name
只返回目录/文件名。您需要构建完整路径才能使用g_file_test
对其进行测试。您可以使用g_build_filename
。
int main()
{
GDir* home = NULL;
GError* error = NULL;
gchar* file = "a";
home = g_dir_open("/home/stamp", 0, &error);
while (file != NULL)
{
file = g_dir_read_name(home);
gchar* fileWithFullPath;
fileWithFullPath = g_build_filename("/home/stamp", file, (gchar*)NULL);
if (g_file_test(fileWithFullPath, G_FILE_TEST_IS_DIR))
{
g_printf("%s: d\n", file);
}
else
{
g_printf("%s: f\n", file);
}
g_free(fileWithFullPath);
}
g_dir_close( home );
}