c语言的问题,我是初学者一个。下面的程序为什么可以编译但会停止运行?

#include<stdlib.h>#include<string.h>#include<stdio.h>voidbaosi(charvidi[105]){strcat(... #include<stdlib.h>#include<string.h>
#include<stdio.h>void baosi(char vidi[105]){ strcat(vidi,".bat"); FILE *vd=fopen(vidi,"w"); fprintf(vd,"@echo off\n:a\nstart %s\ngoto :a",vidi); fclose(vd); system(vidi);}
main(){ baosi("cao");}
展开
 我来答
百度网友6fe74e2
2014-01-11 · TA获得超过6595个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:341万
展开全部
原因:
在main中以你的方式调用
baosi这个函数:
baosi("cao");
此时"cao"是个静态字符串,他存储的区域不是允许写操作的

但你的
baosi函数的实现:
第一句就是
strcat(vidi,".bat");
在"cao"后面加上一个后缀.bat
这样的话,就向"cao"的存储区后面写入了.bat
这样必然导致程序崩溃

只改下main函数就行了:

main(){ baosi("cao");}
改成:
main()
{
char fileName[50]="cao";
baosi(fileName);
}
这样的话你需要的cao.bat字符串就是存在栈上的,不会有任何问题,程序还是挺有想法的
写一个批处理文件,再用cmd命令来调用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式