C的函数,变量声明,malloc,MessageBox,sprintf,简单应用
来源:互联网 发布:edrawmax mac 注册码 编辑:程序博客网 时间:2024/05/01 10:21
函数声明
一.原因:
c是按顺序执行的,当被调用函数定义在主调函数的后面,
而主调函数不能标识这个还未遇到过的函数,
∴需要在主调函数前声明被调用的函数,来通知被调函数的存在
二.位置:
(1)函数内:则只能在此函数中标识
(2)函数外:则从声明点以后的函数,均能标识
(定义在函数外的,一般定义在源文件首部)
Eg:
#include<stdio.h>void test(int i);//声明函数void main(){test(1);}void test(int i){}
三.格式:可以省略形参名,甚至形参类型
(但省形参类型,编译器就不能检查实参和形参是否匹配, ∴建议最好不要省略)
四.注意:与定义不同,函数声明可以反复,变量声明在函数外可以反复
Ps:在函数外声明的变量为全局变量
MessageBox函数
一.作用:创建显示操作消息对话框
二.适用:Visual Basic 6.0)
三.参数:
hWnd:
指定该对话框的所有者窗口。如果该参数为空(0),则该对话框不属于任何窗口(?)。
lpText:
显示在对话框中的消息。
lpCaption:
在对话框标题栏中显示的字符串表达式。如果该参数为空(vbNullString),则使用默认的“错误”作为对话框的标题。
wType:
指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。可以为下列常数之一或某几个数值相加的和。
指定按钮样式,
指定图标样式,
指定默认按钮,
四.返回值:
如果没有足够内存创建消息对话框,则返回0。
如果函数成功运行,则返回:点击的相应按钮
五.与MessageBoxA和MessageBoxW的区别:
MessageBox其实是在库里声明了一个宏
当使用宽字符,即unicode时,自动转换用MessageBoxW
当使用窄字符时,会自动帮转换用MEssageBoxA
即当宽窄不相同的时候编译器会自动帮你转换
∴基本没区别
sprintf变参函数
一.定义:字符格式化命令
二.主要功能:把格式化的数据写入某字符串缓冲区
三.头文件:stdio.h
四.参数列表:
buffer: char型指针,指向将要写入的字符串的缓冲区。
format: 格式化字符串。
[argument]…: 可选参数,可以是任何类型的数据。
五.返回值:
返回写入buffer 的字符数,出错则返回-1.
若buffer 或 format 空指针,且不出错而继续,函数将返回-1,
并且 errno 会被设置为 EINVAL。
sprintf 返回被写入buffer 的字节数,结束字符‘\0’不计入内。
即,如果“Hello”被写入空间足够大的buffer后,函数sprintf 返回5
malloc函数
一.作用:向系统申请分配指定size个字节的内存空间
二.返回类型: void* 类型。void* 表示未确定类型的指针。
C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
三.返回值:
分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回NULL。
当内存不再使用时,应使用free()函数将内存块释放。
函数返回的指针一定要适当对齐,使其可以用于任何数据对象。
四.原型:
extern void *malloc(unsigned int num_bytes);
以前malloc返回char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。
五.头文件:
#include <stdlib.h>#include <malloc.h>
六.与new的区别:
new 返回指定类型的指针,并且可以自动计算所需
int *p;p = new int;//返回类型为int *类型(整数型指针),分配大小为sizeof(int);
int *parr;parr = new int[100];//返回类型为int *类型(整数型指针),分配大小为sizeof(int) * 100;
malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针
int *p;p = (int*)malloc(sizeof(int) * 128);//分配128个(可根据实际需要替换该数值)整型存储单元,//并将这128个连续的整型存储单元的首地址存储到指针变量p中double *pd = (double*)malloc(sizeof(double) * 12);//分配12个double型存储单元,//并将首地址存储到指针变量pd中
改变命令行程序的前景背景色:
Windows
键入enter后
#include<stdio.h>#include<stdlib.h>#include<windows.h>void main(){ char str[10]; for(int i=0;i<16;i++){ sprintf(str,"color %x%x",i,15-i); system(str);anshu Sleep(2000); } getchar();}
Linux
参考以下两篇文章
http://blog.sina.com.cn/s/blog_8043547601013rxf.html
https://www.centos.bz/2013/07/linux-shell-c-show-color-word/
导出dll文件使用dll控制其他的程序
(1)
(2)
(3)参考代码可如下(test.c)
#include<Windows.h>_declspec(dllexport) void go(){ MessageBoxA(0,"HI","Title",MB_OK);}
(4)运行,获取生成的dll路径
正常现象
(5)打开
(6)刷新可见新开的软件(新打开的软件在最底下)
(7)注入
(8)将获得的路径输入,并输入要执行的函数
操作窗体
//一个项目中必须有且只有一个main()
(1)拖动箭头点击QQ窗体
(2)获取红框中的数据
(3)代码如下:
#include<windows.h>#include<stdio.h>void openQQ(){ ShellExecuteA(0, "open", "\"D:\\QQ\\Bin\\QQScLauncher.exe\"", 0, 0, 1);//非无意义值的参数依次为“open”字符串,打开路径,打开是否显示//或者ShellExecuteA(0, "open", "D:\\QQ\\Bin\\QQScLauncher.exe", 0, 0, 1);}void moveQQ(){ HWND win = FindWindowA("TXGuiFoundation","QQ");//HWND是 qq的编号; find寻找窗口 if (win == NULL)//-------------每获取一个对象,都要判断是否为空--------------- { printf("获取窗口对象失败!"); } int i = 0; while (i < 768){ SetWindowPos(win, NULL, i*16/9, i, 500, 400, 0);//非无意义值的参数依次为: 窗口对象, x坐标,y坐标,宽度,高度 i += 10;//每次增加10像素 Sleep(100); if (i/10%2) { ShowWindow(win, SW_HIDE); } else { ShowWindow(win, SW_SHOW); } }}void main(){ //system("taskkill /f /im qq.exe"); openQQ(); Sleep(5000); moveQQ(); Sleep(5000);}
换桌面
SystemParametersInfoA(20,1,"C:\\Users\ASUS-PC\Pictures\\123.png",1);//SystemParametersInfo(20, True, 图片路径, 1)
- C的函数,变量声明,malloc,MessageBox,sprintf,简单应用
- malloc与直接声明变量的区别
- 用简单的描述C语言 sprintf函数是什么意思。
- sprintf函数的简单用法
- 变量和函数的声明与定义(C/C++)
- DELPHI中函数、过程变量的声明与应用
- C语言中变量和函数的声明与定义
- C语言中变量和函数的声明与定义
- C变量和函数的声明和定义
- malloc函数的简单实现
- 函数/变量的声明、使用
- 变量/函数的声明/定义
- C语言 变量的声明
- fprintf()\fscanf()\sprintf() 函数的灵活应用
- 【c/c++】sprintf()函数
- sprintf函数应用
- sprintf函数应用
- c++:sprintf应用实例
- Ubuntu 14.04 下安装google的浏览器——Chrome
- 小希的迷宫<hdoj1272>
- 【杭电2120】有几个环
- 数据结构第二天
- Django1.10 release notes摘编
- C的函数,变量声明,malloc,MessageBox,sprintf,简单应用
- 02、CSS3结构选择器
- Google Play
- GBK与UTF-8的相互转化 Windows Linux
- Ice_cream's world I<hdoj2120>
- Windows下用cmd命令安装及卸载服务
- 用matlab实现自定义函数的数据拟合
- WCF 客户端调用几种方式
- vs2010无法显示Dev的工具