总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
2。例子
#include
void main(){
char *s="Golden Global View"
clrscr()
memset(s,'G',6)
printf("%s",s)
getchar()
re担础曹飞丨读查嫂肠讥turn 0
}
3。memset() 函数常用于内存空间初始化。如:
char str[100]
memset(str,0,100)
4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100]memset(a, '/0', sizeof(a))
memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]memcpy(b, a, sizeof(b))注意如用sizeof(a),会造成b的内存地址溢出。
strcpy就只能拷贝字符串了,它遇到'/0'就结束拷贝;例:char a[100],b[50]strcpy(a,b)如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。
5.补充:一点心得
memset可以方便的清空一个结构类型的变量或数组。
任意进制间的转换#include <stdio.h>
#include <string.h>
#include <math.h>
/*该函数可以实现小于整型数据的任意进制之间转换*/
/*以下函数将a进制数s转换成b进制并输出*/
void f(int a,int b,char s[])
{ char r[17]
int i,n,t,k
for(n=strlen(s)-1,i=t=0*(s+i)!='\0'i++,n--) /*这里先转换成十进制数*/
{ if(*(s+i)<='9')
t+=(*(s+i)-'0')*int(pow(a,n))
else
t+=(*(s+i)-'A'+10)*int(pow(a,n))
}
for(i=0t!=0i++) /*再转换成b进制*/
{ k=t%b
if(k>9)r[i]='A'+k-10
else r[i]='0'+k
t/=b
}
r[i]='\0'
s=strrev(r)
printf("%s",s)
}
C语言模拟键盘代码如下:
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRszCmdLine,intiCmdShow)
{
MSGmsg
if(!MyRegisterClass(hInstance))
{
returnFALSE
}
if(!InitInstance(hInstance,iCmdShow))
{
returnFALSE
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg)
DispatchMessage(&msg)
}
returnmsg.wParam
}
//函数:ShowKey
//作用:实现在窗口中显示按键信息
voidShowKey(HWNDhwnd,intiType,char*szMessage,WPARAMwParam,LPARAMlParam)
{
staticchar*szFormat[2]={"%-14s%3d%c%6u%4d%5s%5s%6s%6s",
"%-14s%3d%c%6u%4d%5s%5s%6s%6s"}
charszBuffer[80]
HDChdc
ScrollWindowEx(hwnd,0,-yChar,&rc,&rc,NULL,NULL,SW_INVALIDATE)
hdc=GetDC(hwnd)
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT))
TextOut(hdc,
xChar,
rc.bottom-yChar,
szBuffer,
wsprintfszBuffer,
szFormat[iType]。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。