Tag: 文件名

使用MSVS2005从C中的完整路径提取文件名

在C程序中,我在字符串中有一个文件路径(具体来说,这是存储在argv[0]的exe名称)。 我想提取文件名并使用MS Visual Studio 2005丢弃目录路径。任何内置函数?

如何使用GetFullPathName提取没有文件夹路径的文件名

我想从路径字符串中提取文件名,但我对GetFullPathName函数有困难: WCHAR *fileExt; WCHAR szDir[256]; //dummy buffer GetFullPathNameW(g_fileName,256, szDir,&fileExt); //g_filename is filename with path string swprintf(szDestDir, L”C:\\Example\\%s”, fileExt); MessageBoxW(hwnd,szDestDir,L”Debug”,MB_OK); //debug message 每次消息框显示“C:\ Example \ 0”而0表示文件名,例如“text.txt”。

从管道命令中读取文件名

所以我试图让C程序从命令行读取文件名,格式如下:cat(filename path)| (程序名称) 当输入文件作为命令行参数输入时,我可以让它读取输入文件的名称,但它不会从连接的参数中读取 这是代码,现在它读取文件的名称,就像在命令行上写入程序名称一样。 #include #include //initialize file pointer FILE *file; //initialize global variables #define DEFAULT_LEN 70 //main int main(int argv, char *argc[]){ //open File for reading file = fopen (argc[1],”r”); //test for failure of file open, if failed, print message, quit if(file == NULL){ printf(“I’m sorry Dave, I’m araid I can’t do that.\n”); […]

Windows代码页与标准C / C ++文件名的交互?

客户抱怨我们的代码用于在文件名中写入带有日文字符的文件,但在所有情况下都不再有效。 我们总是使用好的旧char *字符串来表示文件名,所以它对我来说有点令人震惊,它曾经有效,我们没有做任何我知道应该让它停止工作的事情。 我让他们发给我一个带有嵌入式文件名的文件,从我们的软件导出它,看起来字符串使用hex字符82和83作为双字节序列的第一个字符来表示日文字符。 在线浏览让我相信这可能是SHIFT_JIS和/或Windows代码页932。 在我看来,之前发生的事情是使用此代码页的fopen和ofstream :: open接受的文件名; 现在只有fopen呢。 我已经检查了Visual Studio fopen docs,我没有看到什么使得可接受的字符串传递给fopen。 在短期内,我希望有人可以为我提供一些关于特定Windows fopen与ofstream :: open问题的信息。 从长远来看,我真的想知道在Windows,Linux和OS X上用C ++打开Unicode(和其他?)文件名的可接受方式。 编辑添加:我认为开放工作是在“C”语言环境中完成的,而那些不工作的开放是在客户的默认语言环境中完成的。 然而,多年以来一直如此,该程序的旧版本今天仍在他们的系统上运行,所以这似乎是解释我们所看到的问题的一个远景。 更新:我向客户发送了一个小测试程序。 它已经validationfopen与SHIFT_JIS文件名一起工作正常,而std :: ofstream则没有。 这是在Visual Studio 2005中,无论我使用的是默认语言环境还是“C”语言环境,都会发生这种情况。 我仍然感兴趣,如果有人对这种行为有解释(为什么它会神秘地改变 – 也许是VS2005的服务包?)并且希望在便携式C ++代码中整理一个全面的“最佳实践”来处理Unicode文件名。

从C中的文件指针获取文件名

可能重复: 从C中的文件描述符获取文件名 如何获取fileName有FILE *? 有什么方法可以从C中的文件指针中找到file_name吗? fp = fopen(file,”r”); 从fp,是否可以获取我打开的文件名?