在最近发现了system函数的一个问题。,举个例子,看看问题所在。
(本文是Windows环境下,测试软件是Dev c++,仅作测试用)
先看F:\fa文件夹的目录,是:
我们写一个test.exe,目的是比较fb中x.txt和y.txt文件的差异。很显然,使用cmd的cd指令和fc指令对文件进行比较。
于是,就写出了这样的代码:
#include<stdio.h>
#include<stdlib.h>
int main(){
system("cd fb");
system("fc x.txt y.txt");
}
看似没有任何问题,但是运行的结果是:
也就是说,找不到x.txt和y.txt文件,但是它们都是存在的啊。我们执行一下dir,看看有什么问题。
#include<stdio.h>
#include<stdlib.h>
int main(){
system("cd fb");
//system("fc x.txt y.txt");
system("dir");
}
运行结果是:
竟然还在fa目录下?看来,cd fb这个指令无效。
我们发现,每一个指令其实都是单独处理的,上一个指令所做的cd fb在下一个函数中实际是无效的,目录等信息都是重新建立的,因此才产生这样的情形。
因此,我们只要把所有的指令放进一个字符串里面,放进一行即可。
我们可以使用&&符号对cmd中的指令进行连接。
#include<stdio.h>
#include<stdlib.h>
int main(){
system("cd fb&&fc x.txt y.txt");
//system("dir");
}
运行结果就正常了。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.cnblogs.com/jisuanjizhishizatan/p/15924431.html
内容来源于网络,如有侵权,请联系作者删除!