C语言 system函数的一个注意事项

x33g5p2x  于2022-02-22 转载在 其他  
字(0.8k)|赞(0)|评价(0)|浏览(224)

在最近发现了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");
}

运行结果就正常了。

相关文章

微信公众号

最新文章

更多