作为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”。)
答案 0 :(得分:3)
好的,这是描述你需要调用的Win32函数的页面:
你需要在你的程序的顶部#include <windows.h>
,并可能跳过更多的箍,以便在这样一个旧的编译器上编译(也许Turbo C甚至没有附带Windows头文件?)祝你好运!
答案 1 :(得分:2)
我相信这可以做到,但它很棘手,因为它需要深入研究毛茸茸的Win32 API调用。使用现代编译器简单地重新编译将更容易 - 有什么理由不能这样做吗?
以下是两个免费的高质量C / C ++编译器的链接,这些编译器对长文件名没有任何问题:Microsoft Visual C++ Express Edition; MinGW
答案 2 :(得分:1)
您还可以使用dir /x
从命令行获取短文件名