当我在使用 dirent.h 时遇到问题时,不得不在 Turbo C++ 中为学校项目做一些遗留编码
#include <dirent.h>
#include <stdio.h>
#include <iostream.h>
void ls(char *searchstring)
{
DIR *directory_list;
struct dirent *dentry;
directory_list = opendir (searchstring);
if (directory_list != NULL)
{
while ((dentry = readdir (directory_list)) != NULL)
{
cout << dentry->d_name << endl;
}
}
closedir (directory_list);
}
void main()
{
char searchstring[128];
gets(searchstring);
cout << "list of files under " << searchstring;
ls(searchstring);
}
理想情况下,此代码应列出目录中的所有文件和文件夹名称。但我明白了:
似乎该
d_name
字段似乎没有存储大于 9 个字符(包括 null)的文件名,而是用 '~' 和一个数字截断它。
我在 dirent 结构中阅读了有关字符串的 NAME_MAX 绑定长度的内容,但我在网络上的任何地方都找不到有关它的更多信息。
我想要完整的文件和文件夹名称,对不起,我必须使用古老的 Turbo C++。