走同样的路,发现不同的人生
sprintf(cmd, "echo '%s %s' >> reports.log", now());
格式字符串中明明有两个%s,后边的参数却只有一个now()(你的编译器没有警告吗?)。在sprintf()中,就以为你传入了两个字符串,当它去读取那个不存在的参数时,就访问违规了。我看到你还有个comment变量没使用,是不是这个意思:
%s
now()
sprintf()
comment
sprintf(cmd, "echo '%s %s' >> reports.log", now(), comment);
至于创建的文件,就在编译出来的EXE文件旁边,不一定在源码目录。关于题目中的系统调用:我第一反应是open(),然后是CreateFile(),你这个算是命令行吧,不能叫系统调用。
系统调用
open()
CreateFile()
格式字符串中明明有两个
%s
,后边的参数却只有一个now()
(你的编译器没有警告吗?)。在sprintf()
中,就以为你传入了两个字符串,当它去读取那个不存在的参数时,就访问违规了。我看到你还有个comment
变量没使用,是不是这个意思:至于创建的文件,就在编译出来的EXE文件旁边,不一定在源码目录。
关于题目中的
系统调用
:我第一反应是open()
,然后是CreateFile()
,你这个算是命令行吧,不能叫系统调用
。