printf("update now...\n");
system("start update.bat");
printf("Extracting...\n"); //这条语句怎么会被跳过?
Sleep(20*1000);
printf("Delete temp file...\n");
DeleteFile(localPath);
update.bat里的内容是
WinRAR x D:\testfolder\download\update.rar D:\testfolder\Server\ -y
exit
update.bat是一个解压文件的批处理文件,然后C代码通过调用system去运行这个批处理文件,然后system语句下面的printf语句就被跳过了,直接执行Sleep语句了,如果把printf语句删除,则Sleep语句就会被跳过,请教下,这是怎么回子事情啊
10 个解决方案
#1
我的机器上正常。
#2
晕,不会吧,我在这边试了好多回了,紧接着system语句下面写什么语句都会被跳过,然后从它下面的第二条语句开始执行
#3
用的DEVC++
#4
我的机器上正常。
晕,不会吧,我在这边试了好多回了,紧接着system语句下面写什么语句都会被跳过,然后从它下面的第二条语句开始执行
用的DEVC++
#5
我的机器上正常。
嗯,把这几条语句单独拿出来是正常的,但是一放到整体里就会出现上述问题,真奇怪
#6
1.你怎么知道这条语句被跳过了,你单步调试的时候跳过了还是只是没有打印出来。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
#7
1.你怎么知道这条语句被跳过了,你单步调试的时候跳过了还是只是没有打印出来。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
一开始是没有这个printf的,直接是Sleep,结果根本就没有停顿,然后在它下面加了个system("PAUSE"),也不行,最后加了这个printf,printf不显示,但是Sleep就起作用了...
刚才用VC6编译了一下,问题就不出现了。难道真的是编译器的问题?还是整段代码本身就有隐患...
#8
1.你怎么知道这条语句被跳过了,你单步调试的时候跳过了还是只是没有打印出来。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
一开始是没有这个printf的,直接是Sleep,结果根本就没有停顿,然后在它下面加了个system("PAUSE"),也不行,最后加了这个printf,printf不显示,但是Sleep就起作用了...
刚才用VC6编译了一下,问题就不出现了。难道真的是编译器的问题?还是整段代码本身就有隐患...
是缓冲区不一样吧,DEVC++可能留在缓冲区里了,要用fflush强制冲刷吧。VC6直接就出来了。没用过DEVC++,不清楚,你试试?
#9
我的机器上正常。
嗯,把这几条语句单独拿出来是正常的,但是一放到整体里就会出现上述问题,真奇怪
应该不是缓冲区的问题,因为后面有换行符,有刷新缓冲区的!
是不是system函数执行阻塞了?
#10
单步
#1
我的机器上正常。
#2
我的机器上正常。
晕,不会吧,我在这边试了好多回了,紧接着system语句下面写什么语句都会被跳过,然后从它下面的第二条语句开始执行
#3
我的机器上正常。
晕,不会吧,我在这边试了好多回了,紧接着system语句下面写什么语句都会被跳过,然后从它下面的第二条语句开始执行
用的DEVC++
#4
我的机器上正常。
晕,不会吧,我在这边试了好多回了,紧接着system语句下面写什么语句都会被跳过,然后从它下面的第二条语句开始执行
用的DEVC++
#5
我的机器上正常。
嗯,把这几条语句单独拿出来是正常的,但是一放到整体里就会出现上述问题,真奇怪
#6
1.你怎么知道这条语句被跳过了,你单步调试的时候跳过了还是只是没有打印出来。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
#7
1.你怎么知道这条语句被跳过了,你单步调试的时候跳过了还是只是没有打印出来。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
一开始是没有这个printf的,直接是Sleep,结果根本就没有停顿,然后在它下面加了个system("PAUSE"),也不行,最后加了这个printf,printf不显示,但是Sleep就起作用了...
刚才用VC6编译了一下,问题就不出现了。难道真的是编译器的问题?还是整段代码本身就有隐患...
#8
1.你怎么知道这条语句被跳过了,你单步调试的时候跳过了还是只是没有打印出来。
2.如果只是没有打印出来,那么可以使用一下fflush试试。
一开始是没有这个printf的,直接是Sleep,结果根本就没有停顿,然后在它下面加了个system("PAUSE"),也不行,最后加了这个printf,printf不显示,但是Sleep就起作用了...
刚才用VC6编译了一下,问题就不出现了。难道真的是编译器的问题?还是整段代码本身就有隐患...
是缓冲区不一样吧,DEVC++可能留在缓冲区里了,要用fflush强制冲刷吧。VC6直接就出来了。没用过DEVC++,不清楚,你试试?
#9
我的机器上正常。
嗯,把这几条语句单独拿出来是正常的,但是一放到整体里就会出现上述问题,真奇怪
应该不是缓冲区的问题,因为后面有换行符,有刷新缓冲区的!
是不是system函数执行阻塞了?
#10
单步