我做了一个整人的C程序,代码如下,我自己运行正常,但发给别人就无法运行了,求解决

此昵称已隐藏 2012-04-06 11:29:13
#include<stdlib.h>
#include <stdio.h>
#include <string.h>
void qx()
{
char b[]={"我是猪"},a[7];
scanf("%s",a);
if (!strcmp(a,b))
{
system("shutdown -a");
printf("关机已取消,猪");
fflush(stdin);
getchar();
exit(0);
}
}
int main()
{
system("shutdown -s -t 300");
printf("你的计算机将在5分钟后关闭,输入“我是猪”取消关机\n");
qx();
system("shutdown -a");
system("shutdown -s -t 60");
printf("居然不说,1分钟后关机!");
while(1)
{
qx();
}
}
...全文
3936 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
hemmingway 2012-04-16
  • 打赏
  • 举报
回复
有意思么
xingyun86 2012-04-16
  • 打赏
  • 举报
回复
楼主可能使用的是动态链接(MD或MDd)。试着改成静态连接(MT或者MTd)进行编译。
MD 动态链接的Release版本
MDd 动态链接的Debug版本

MT 静态链接的Release版本
MTd 静态链接的Debug版本
此选项在,Project -> Configuration Properties -> C/C++ -> Code Generation选项的Runtime Library中
zhengjiankang 2012-04-16
  • 打赏
  • 举报
回复
C运行库版本不一样。
你得知道你的电脑上的C运行库版本是多少。
如果想在他电脑上运行。
带上那个C运行库的安装包给他安装了就可以了。
查看你电脑上的C运行库版本。
开始->运行->regedit->搜索winSxS就可以看到了。
比如我电脑上最高级版本的注册表值为
C:\WINDOWS\winsxs\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_2da47225\\msvcr80d.dll 开头的一些值。
那么在我的开发机上编译出的exe文件需要附带vcredist_x86_6195.EXE的安装包才可以。
  • 打赏
  • 举报
回复
很对啊
迎风悟极道 2012-04-15
  • 打赏
  • 举报
回复
如果你以前用debug的话改成release就行了,叫别人试了可以,还被人骂了,因为他们输入不进中文
honbo 2012-04-15
  • 打赏
  • 举报
回复
其实原因很简单,他不想运行这个程序,所以就说不能运行了。
Hi_Panda_CRL 2012-04-14
  • 打赏
  • 举报
回复
有些人真是的,觉得这样的贴字不好。我觉得至少这是一种提高学习兴趣的好方法呀。在娱乐的同时还可以学到知识,何乐而不为呢?
ChristopherWu 2012-04-14
  • 打赏
  • 举报
回复
+1[Quote=引用 60 楼 的回复:]

改成release 然后重新编译链接 然后把工作目录下的release文件打包压缩 发给别人 我这里实验是可以了
[/Quote]
蓝鹰 2012-04-14
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 的回复:]

有些人真是的,觉得这样的贴字不好。我觉得至少这是一种提高学习兴趣的好方法呀。在娱乐的同时还可以学到知识,何乐而不为呢?
[/Quote]

支持楼主,不喜欢道德先生
shen_wei 2012-04-13
  • 打赏
  • 举报
回复
环境啥的 写出来。。。
MagiSu 2012-04-13
  • 打赏
  • 举报
回复
shutdown权限够不够阿
human8848 2012-04-13
  • 打赏
  • 举报
回复
同样的程序无法运行,不足为奇。还有,既然是做程序员,出现问题就不要归结于运气,而要踏踏实实寻找问题的原因。具体到这个问题,操作系统,CRT库,权限,编译器和编译选项等等的不同都会有影响,日子久了你就会发现这是很普遍的问题。还有,你这个程序是最简单的console命令行程序,如何会与mfc,托管扯上关系?把那些无关的选项都去掉,问题复杂化反而不好解决。
美到心痛 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 的回复:]

shutdown命令在有的电脑上无法运行是很正常的。
别人的设置,或者优化和你的不同,所以不能运行是很正常的。
建议你先写一个不要带有权限限制的软件,在别人电脑上运行一下。
[/Quote]
+1
或者是需要去掉RTL和runtime package
ioaq 2012-04-13
  • 打赏
  • 举报
回复
改成release 然后重新编译链接 然后把工作目录下的release文件打包压缩 发给别人 我这里实验是可以了
gongyuanh 2012-04-13
  • 打赏
  • 举报
回复
我试了一下,发现,以下两句跑起来会出问题。
system("shutdown -a");
system("shutdown -s -t 60");
第二句根本不会执行,但是如果在第二句上打短点,就会执行。
我想可能是system执行dos命令的缺陷。
34栋610 2012-04-12
  • 打赏
  • 举报
回复
你的运气比较差,这事我也干过,用一个文件夹,把EXE放里面,后缀就不会改了。
hymgln 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 的回复:]
直接传输.exe文件,在传输的过程中有可能会导致程序不可用
你最好打包成.rar文件,发过去,再要他打开~
[/Quote]
这样好像还是不行啊,我试过,朋友还是打不开。。。
zoopang 2012-04-12
  • 打赏
  • 举报
回复
不文明贴子
wizard_tiger 2012-04-12
  • 打赏
  • 举报
回复
版本问题,可能是你的版本高,他版本低。
maptrix 2012-04-12
  • 打赏
  • 举报
回复
vs2005 vs2008 编译的程序,在多数windows系统上面需要装runtime运行库。
加载更多回复(47)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧