调用系统命令system()

头文件

stdlib.h

函数原型

int system(char *command) Windows系统
int system(const char *string) Linux系统

功能

简单的讲,system函数可以调用在程序中调用系统命令。
在Windows系统中调用的是cmd控制台命令;在Linux系统中调用的是shell命令

参数

输入
函数的输入是一个字符串,可以是字符串常量,也可以是字符串数组。
字符串的内容即是需要执行的系统命令。
输出
函数输出为一个整数值,用于标志命令运行的结果。具体返回值的意义较为复杂,在这里暂不作深入研究。

分析

只要是在命令行或者shell中可以执行的命令,该函数都可以调用并执行,因此可以在程序中对系统进行各种操作。
在调用时,参数可以直接为字符串,也可以是字符串数组。例如,

#include <stdio.h>
#include <stdlib.h>
int main()
{system("dir");return 0;
}

或者是

#include <stdio.h>
#include <stdlib.h>
int main()
{char com[]="dir";system(com);return 0;
}

也可以利用字符串处理函数,对命令进行灵活的处理。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{char com1[]="dir";char com2[]=" /q";system(strcat(com1,com2));return 0;
}

实验

在学习中,我们可以利用system函数实现一些有趣的小功能。

实现程序暂停

在如VC6.0、VS2013、C-Free等开发环境下编译器会自动在程序的结尾添加暂停功能,从而方便查看程序运行的结果。但是在有的开发环境下,编译器并不会自动添加暂停功能,使得程序在运行时只能看到一个黑框一闪而过。为了能够看到程序运行的结果,我们需要手动在程序的结尾添加一个暂停语句,这里便要用到system函数来实现。

#include <stdio.h>
#include <stdlib.h>
int main()
{printf("Hello World!\n");system("pause");return 0;
}

实现系统关机功能

有了system函数对系统指令的调用,我们自然就可以实现在命令行更够实现的功能。例如自动关闭计算机。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{char t[10], c[30] = "shutdown -s -t ";printf("请输入多少秒后关闭计算机:");gets(t);system(strcat(c, t));return 0;
}

控制台标题

程序运行时,通常在标题栏中显示的是程序的运行目录。我们可以使用系统命令,使标题栏显示我们需要的内容,如程序名,使得程序窗口显得更加合理。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{char t[10], c[30] = "shutdown -s -t ";system("title 关闭计算机");printf("请输入多少秒后关闭计算机:");gets(t);system(strcat(c, t));return 0;
}

system函数还可以实现很多强大的功能,来帮助我们利用程序来操作系统或者获得信息。巧妙的利用系统命令可以得到很多灵活而又方便的功能。

【C语言学习笔记】调用系统命令system相关推荐

  1. C语言学习笔记——调用函数时提示警告

    [代码] int main() { abc(); abc3(); return 0; } void abc() { int a=65135; double i=8256.67; a=(int)i+a; ...

  2. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  3. 【Go语言 · 学习笔记】

    文章目录 Go语言 · 学习笔记 一.Go包管理 1. 什么是Go语言中的包 2. 包的命名 3. main包 4. 导入包 5. 远程包导入 6. 命名导入 7. 包的init函数 二.Go开发工具 ...

  4. (一)Go语言学习笔记

    Go语言学习笔记 1 前言 2 写Go语言需要注意的地方 2.1 Go语言编译执行和直接run的区别 2.2 Go语言的特点 2.3 Linux下配置Go环境变量 2.4 随记 3 go_code 3 ...

  5. 梓益C语言学习笔记之链表&动态内存&文件

    梓益C语言学习笔记之链表&动态内存&文件 一.定义: 链表是一种物理存储上非连续,通过指针链接次序,实现的一种线性存储结构. 二.特点: 链表由一系列节点(链表中每一个元素称为节点)组 ...

  6. 6.方法(go语言学习笔记)

    6.方法(go语言学习笔记) 目录 定义 匿名字段 方法集 表达式 1. 定义 方法是与对象实例绑定的特殊函数. 方法是面向对象编程的基本概念,用于维护和展示对象的自身状态.对象是内敛的,每个实例对象 ...

  7. 梓益C语言学习笔记之指针

    梓益C语言学习笔记之指针 一.32位平台下,地址是32位,所以指针变量占32位,共4个字节 二.内存单元的地址即为指针,存放指针的变量称为指针变量,故:"指针"是指地址,是常量,& ...

  8. go get 拉取指定版本_go语言学习笔记-基础知识-3

    相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...

  9. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

最新文章

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:禁用按钮
  2. ActiveMQ消息存储持久化
  3. 【Python】5种基本但功能非常强大的可视化类型
  4. 修改linux系统用户最大线程数限制
  5. java apktoo_apktool.jar
  6. 总奖金100万!2021SEED江苏大数据开发与应用大赛(华录杯)正式开赛!
  7. ocr原理 oracle,Oracle技术之RAC Voting disk和OCR的管理
  8. 烟台大学举办首届ACM程序设计大赛
  9. 全志r16android sdk,全志 Allwinner R16 SoC 全套设计资料分享 原理图 PCB 数据手册 SDK...
  10. 学习Java,可以从事哪些岗位?
  11. 网页星号点号密码查看最简方法
  12. Java模拟醉汉行走问题_醉汉随机行走问题的统计学模型.pdf
  13. C1任务01-修改《植物大战僵尸》游戏存档
  14. JavaScript实战操作(DOM,BOM)
  15. 平常水题 - Atcoder 058 - C - 怪文書 / Dubious Document(字符串的处理)
  16. logstash解析iis日志
  17. GOOGLE地图基站定位-Google Mobile Maps API
  18. SpringBoot员工管理系统(整合Mybatis+mysql)
  19. XML Httprequest对象
  20. QSocketNotifier 解读

热门文章

  1. c语言将数组元素循环右移k位,把一个含有N个元素的数组循环右移K位
  2. 史上最详细最全的Linux上安装Oracle的教程-centos7-humf
  3. Android阿里、京东、美团等大厂面试Android篇
  4. 深度解读华为云AI战略:如何靠AI赢得下一个十年?
  5. 新媒体人必看!如何利用飞项做好内容运营管理
  6. 蜗轮蜗杆计算软件_TP蜗杆减速机锐琛,升降器企业
  7. Cross Site Scripting DOM攻击jQuery append() 的处理方法
  8. php xcahe安装,yum安装实现lamp分离及Xcache加速
  9. 2017计算机组装入门,组装电脑入门攻略:装机之家带你了解DIY硬件知识
  10. MIT 6.828 (二) Lab 2: Memory management