user-0 提问: 请问怎么用C语言访问像\\192.168.1.105这样的本地网络，并且读取里面的文件？

回复:
user: user-1
content: 要不怎么叫“非法……”呢？

user: user-2
content: 引用 10 楼 zhao4zhong1 的回复:不信的话，你在某个子目录下建一个junction指向自己的某一级父目录（这样就形成了一个死循环目录链），然后使用API和dir命令分别遍历该子目录试试看。 junction https://technet.microsoft.com/en-us/sysinternals/bb896768  这不是你自己处理有问题嘛？

user: user-1
content: 不信的话，你在某个子目录下建一个junction指向自己的某一级父目录（这样就形成了一个死循环目录链），然后使用API和dir命令分别遍历该子目录试试看。 junction https://technet.microsoft.com/en-us/sysinternals/bb896768

user: user-1
content: 引用 8 楼 jack960330 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] [quote=引用 6 楼 jack960330 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] system("net use y: \\192.168.1.105 password"); 应改为 system("net use y: \\\\192.168.1.105 password");  不是应该有网络邻居的API么[/quote] 用API不如用命令行简单、可靠。[/quote]  API更直接，可靠这个应该都差不多，为啥命令行就可靠，API就不可靠？[/quote] 参考下面： 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命令不会。

user: user-2
content: 引用 7 楼 zhao4zhong1 的回复:[quote=引用 6 楼 jack960330 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] system("net use y: \\192.168.1.105 password"); 应改为 system("net use y: \\\\192.168.1.105 password");  不是应该有网络邻居的API么[/quote] 用API不如用命令行简单、可靠。[/quote]  API更直接，可靠这个应该都差不多，为啥命令行就可靠，API就不可靠？

user: user-1
content: 效率再高，遇到意外而陷入死循环（比如楼上的循环目录链）或遇到数据量太大（比如所有文件数目达上千万）而导致溢出、崩溃、截短、……，我是不能忍受的。 至于有人能忍受，也是我管不了的。

user: user-2
content: 引用 18 楼 adlay 的回复:这是一个代码重用的问题，使用 shell 命令是比使用 API 更高一个层次的重用， 层次越高，复杂度越低，效率也更低 （先生成文件再读文件就更低了，其实可以通过管道来获取输出的）  这就好比，用 C++ 能做的，C 也能做，  C 能做得，汇编也能做  汇编能做的，硬件也能做    这是一个方便和效率权衡的问题  你这说的什么跟什么，主要是API比较直接罢了

user: user-3
content: 这是一个代码重用的问题，使用 shell 命令是比使用 API 更高一个层次的重用， 层次越高，复杂度越低，效率也更低 （先生成文件再读文件就更低了，其实可以通过管道来获取输出的）  这就好比，用 C++ 能做的，C 也能做，  C 能做得，汇编也能做  汇编能做的，硬件也能做    这是一个方便和效率权衡的问题

user: user-1
content: 引用 15 楼 jack960330 的回复:[quote=引用 14 楼 zhao4zhong1 的回复:] [quote=引用 13 楼 jack960330 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] 要不怎么叫“非法……”呢？  那你也不要建立什么快捷方式指向目录了，目录列表自动有一个名字是.和..的目录，如果 处理不当本来就会形成死循环，你处理肯定要做过滤的，哪有不过滤处理的[/quote] 那你试试过滤处理一下10楼所说的这种故意创建的非法目录结构。[/quote] 我一直觉得，shell命令能做的，基本上API就能做，问题在于怎么做，文件夹便利API不会自动遍历下级目录，是否选择遍历下级目录主要是你的遍历算法[/quote] 个人意见： 其实真正的不同在于： shell命令对各种意外的鲁棒性是经过无数先烈千锤百炼的结果； 而 API对各种意外的鲁棒性相比之下就至少差一个数量级了。  还可以参考一下这个帖子： http://bbs.csdn.net/topics/391817065

user: user-2
content: 引用 14 楼 zhao4zhong1 的回复:[quote=引用 13 楼 jack960330 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] 要不怎么叫“非法……”呢？  那你也不要建立什么快捷方式指向目录了，目录列表自动有一个名字是.和..的目录，如果 处理不当本来就会形成死循环，你处理肯定要做过滤的，哪有不过滤处理的[/quote] 那你试试过滤处理一下10楼所说的这种故意创建的非法目录结构。[/quote]  你那不就快捷方式么

user: user-2
content: 引用 14 楼 zhao4zhong1 的回复:[quote=引用 13 楼 jack960330 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] 要不怎么叫“非法……”呢？  那你也不要建立什么快捷方式指向目录了，目录列表自动有一个名字是.和..的目录，如果 处理不当本来就会形成死循环，你处理肯定要做过滤的，哪有不过滤处理的[/quote] 那你试试过滤处理一下10楼所说的这种故意创建的非法目录结构。[/quote] 我一直觉得，shell命令能做的，基本上API就能做，问题在于怎么做，文件夹便利API不会自动遍历下级目录，是否选择遍历下级目录主要是你的遍历算法

user: user-1
content: 引用 13 楼 jack960330 的回复:[quote=引用 12 楼 zhao4zhong1 的回复:] 要不怎么叫“非法……”呢？  那你也不要建立什么快捷方式指向目录了，目录列表自动有一个名字是.和..的目录，如果 处理不当本来就会形成死循环，你处理肯定要做过滤的，哪有不过滤处理的[/quote] 那你试试过滤处理一下10楼所说的这种故意创建的非法目录结构。

user: user-2
content: 引用 12 楼 zhao4zhong1 的回复:要不怎么叫“非法……”呢？  那你也不要建立什么快捷方式指向目录了，目录列表自动有一个名字是.和..的目录，如果 处理不当本来就会形成死循环，你处理肯定要做过滤的，哪有不过滤处理的

user: user-3
content: 映射的一个磁盘，执行 net use y: \\192.168.1.105 password 后本地会多一个分区 Y

user: user-4
content: 请问y:是什么意思呢？

user: user-1
content: 引用 6 楼 jack960330 的回复:[quote=引用 5 楼 zhao4zhong1 的回复:] system("net use y: \\192.168.1.105 password"); 应改为 system("net use y: \\\\192.168.1.105 password");  不是应该有网络邻居的API么[/quote] 用API不如用命令行简单、可靠。

user: user-2
content: 引用 5 楼 zhao4zhong1 的回复:system("net use y: \\192.168.1.105 password"); 应改为 system("net use y: \\\\192.168.1.105 password");  不是应该有网络邻居的API么

user: user-1
content: system("net use y: \\192.168.1.105 password"); 应改为 system("net use y: \\\\192.168.1.105 password");

user: user-2
content: 应该有读取网络邻居计算机的方法，这个 是网络邻居的格式

user: user-1
content: system("net use y: \\192.168.1.105 password"); f=fopen("y:\\test.txt","r"); ... fclose(f); system("net use y: /delete");