C语言system函数实战:调用DOS命令的完整指南
system函数允许C程序直接执行操作系统外壳命令。在Windows环境下,该函数常用于控制Dos窗口样式、执行定时任务或清理文件。下文提供从基础用法到复杂菜单控制的实战代码。
system函数原理与基础准备
system函数包含在标准C库中(<stdlib.h>),其作用是向操作系统发起一个DOS命令请求。在Windows平台下,函数名不区分大小写。其基本原型为:
int system(char *command);
返回值通常为命令执行的退出码。调用前需确保目标路径或文件名符合安全规范,避免路径注入风险。
第1步:控制台显示效果优化
在执行命令时,可通过color参数调整控制台外观,便于调试或增强交互体验。
- 目的:改变前景与背景色。
- 入口:
system("color XY")格式,X为背景色代号,Y为前景色代号。 - 关键参数映射:
- 0=黑色, 1=蓝色, 2=绿色, 3=湖蓝, 4=红色, 5=紫色, 6=黄色, 7=白色
- 8=灰色, 9=淡蓝, A=淡绿, B=淡浅绿, C=淡红, D=淡紫, E=淡黄, F=亮白
示例操作:
system("color 0A"); // 黑底绿字
完成状态:终端文字颜色即刻更新为新组合。
第2步:实现交互式定时关机程序
利用 shutdown -s -t <秒数> 可实现倒计时关机,配合 shutdown -a 可取消该操作。
操作步骤与代码逻辑:
- 定义接收用户输入的字符数组。
- 使用
goto构建循环结构以实现强制交互。 - 调用
system()启动倒计时。 - 比较输入字符串是否满足条件,决定是终止还是重启计数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[10];
flag:
printf("请输入\"我是猪\",否则电脑将在两分钟后关闭\n");
system("shutdown -s -t 120");
scanf("%s", a);
if (strcmp(a, "我是猪") == 0){
printf("恭喜你成功选择自己的属相,主动承认现实!\n");
system("shutdown -a"); // 撤销倒计时
} else {
goto flag;
}
return 0;
}
第3步:构建功能完整的关机菜单
结合窗口大小设置、日期获取以及字符串拼接,打造结构化控制面板。
配置项说明:
system("title C语言关机程序"):设置标题栏文本。system("mode con cols=48 lines=25"):固定控制台尺寸。system("pause"):冻结屏幕以便观察结果。
核心实现:通过 strcat 将定值命令与用户变量合并后传入。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void menuDisplay() {
printf("*********** 关机菜单 ************\n");
printf("1. 设置自动关闭(最多600秒) \n");
printf("2. 立即关闭计算机 \n");
printf("3. 注销当前用户会话 \n");
printf("4. 退出程序 \n");
}
int main() {
system("title C语言管理系统");
system("mode con cols=48 lines=25");
system("color 0B");
system("date /T");
system("TIME /T");
menuDisplay();
int choice = 0;
char cmdTemplate[30] = "shutdown -s -t ";
char timeVal[10];
scanf("%d", &choice);
switch (choice) {
case 1:
printf("设定倒计时秒数: ");
scanf("%s", timeVal);
strcat(cmdTemplate, timeVal);
system(cmdTemplate);
break;
case 2:
system("shutdown -p");
break;
case 3:
system("shutdown -l");
break;
default:
printf("无效输入!");
}
system("pause");
exit(0);
}
第4步:调用命令删除指定文件
可直接传递文件路径给 del 指令进行清除操作。
// Windows命令,注意路径中的反斜杠在C字符串中需转义
// 若路径为 d:\123.txt,实际代码写法应为:
system("del d:\\\\123.txt");
注意:在生产环境中使用此功能务必谨慎,建议先备份或确认权限,防止误删系统核心文件。
总结
通过掌握 system 函数的字符串参数特性,开发者可以在C/C++中灵活操控Windows底层工具。无论是美化界面、执行批量任务还是简单的逻辑判断,都能有效利用外部Shell扩展程序能力。以上就是C语言之system函数案例详解的详细内容,更多关于C语言系统调用的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













