如何根据扩展名动态获取文件名?

时间:2009-02-05 10:37:10

标签: c file winapi ttcn

作为this question ....

的后续行动

现在我通过用户j_random_hacker的评论找到了该问题的答案。这里Windows遵循8.3文件命名标准意味着turbo c只能读取名称长度为8个字符且扩展名为3个字符的文件。因此,Windows将为任何不符合8.3命名标准的文件指定其他名称。就像在我的情况下,Windows为 HI.TTCN 的实际文件名提供 HIBDS~1.TTC

现在我的问题是我想在运行时将该文件名作为参数,如下所示

  

glc hi.ttcn   

这里glc是我的.exe文件,它将检查编码指南违规,hi.ttcn是要检查的实际TTCN文件。所以这里的问题是如上所述,窗口正在给hi.ttcn提供一些其他名称,所以我的程序无法打开该文件说“文件名不存在”,因为我给的是相同的参数字符串“hi.ttcn” FOPEN。那么如何在运行时为给定的参数字符串获取Windows分配的文件名(意味着我希望在给出“HI.TTCN”时获得字符串“HIBDS~1.TTC”。)

3 个答案:

答案 0 :(得分:3)

好的,这是描述你需要调用的Win32函数的页面:

GetShortPathName Function

你需要在你的程序的顶部#include <windows.h>,并可能跳过更多的箍,以便在这样一个旧的编译器上编译(也许Turbo C甚至没有附带Windows头文件?)祝你好运!

答案 1 :(得分:2)

我相信这可以做到,但它很棘手,因为它需要深入研究毛茸茸的Win32 API调用。使用现代编译器简单地重新编译将更容易 - 有什么理由不能这样做吗?

以下是两个免费的高质量C / C ++编译器的链接,这些编译器对长文件名没有任何问题:Microsoft Visual C++ Express Edition; MinGW

答案 2 :(得分:1)

您还可以使用dir /x从命令行获取短文件名