关于获取文件名带空格的文件夹下目录的问题

时间:2022-07-13 19:33:11
例如,fp=fopen("C:\\Program Files","rb");
  fgets(str,100,fp);
       测试了一下    str里面没东西      fp里面调试也是显示“屯屯屯屯。。。。。”
  求解怎么解决

8 个解决方案

#1


试试

fp=fopen("C:\\\"Program Files\"","rb");

#2


引用 1 楼 cjqpker 的回复:
试试

fp=fopen("C:\\\"Program Files\"","rb");


等……等一下……你打开了个目录??

#3


sprintf_s(path,"\"dir /b %s >>D:\\buf.Ock\"",s);

system(path);//将目录导出到buf.Ock     s是带空格的一个字符串    这样可行吗?

#4


引用 2 楼 cjqpker 的回复:
Quote: 引用 1 楼 cjqpker 的回复:

试试

fp=fopen("C:\\\"Program Files\"","rb");


等……等一下……你打开了个目录??

是的  我打开了一个目录    然后请看看楼上

#5


楼主想通过fgets函数获取指定目录下的所有文件和子目录,那是彻彻底底地想歪了。

system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

#6


引用 3 楼 m_inttemp 的回复:
sprintf_s(path,"\"dir /b %s >>D:\\buf.Ock\"",s);

system(path);//将目录导出到buf.Ock     s是带空格的一个字符串    这样可行吗?


执行命令时,如果s中的路径带空格,那要将路径用双引号(“”)包起来

#7


引用 5 楼 zhao4zhong1 的回复:
楼主想通过fgets函数获取指定目录下的所有文件和子目录,那是彻彻底底地想歪了。

system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

谢谢     

#8


引用 6 楼 cjqpker 的回复:
Quote: 引用 3 楼 m_inttemp 的回复:

sprintf_s(path,"\"dir /b %s >>D:\\buf.Ock\"",s);

system(path);//将目录导出到buf.Ock     s是带空格的一个字符串    这样可行吗?


执行命令时,如果s中的路径带空格,那要将路径用双引号(“”)包起来

谢谢    暂时解决了

#1


试试

fp=fopen("C:\\\"Program Files\"","rb");

#2


引用 1 楼 cjqpker 的回复:
试试

fp=fopen("C:\\\"Program Files\"","rb");


等……等一下……你打开了个目录??

#3


sprintf_s(path,"\"dir /b %s >>D:\\buf.Ock\"",s);

system(path);//将目录导出到buf.Ock     s是带空格的一个字符串    这样可行吗?

#4


引用 2 楼 cjqpker 的回复:
Quote: 引用 1 楼 cjqpker 的回复:

试试

fp=fopen("C:\\\"Program Files\"","rb");


等……等一下……你打开了个目录??

是的  我打开了一个目录    然后请看看楼上

#5


楼主想通过fgets函数获取指定目录下的所有文件和子目录,那是彻彻底底地想歪了。

system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

#6


引用 3 楼 m_inttemp 的回复:
sprintf_s(path,"\"dir /b %s >>D:\\buf.Ock\"",s);

system(path);//将目录导出到buf.Ock     s是带空格的一个字符串    这样可行吗?


执行命令时,如果s中的路径带空格,那要将路径用双引号(“”)包起来

#7


引用 5 楼 zhao4zhong1 的回复:
楼主想通过fgets函数获取指定目录下的所有文件和子目录,那是彻彻底底地想歪了。

system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

谢谢     

#8


引用 6 楼 cjqpker 的回复:
Quote: 引用 3 楼 m_inttemp 的回复:

sprintf_s(path,"\"dir /b %s >>D:\\buf.Ock\"",s);

system(path);//将目录导出到buf.Ock     s是带空格的一个字符串    这样可行吗?


执行命令时,如果s中的路径带空格,那要将路径用双引号(“”)包起来

谢谢    暂时解决了