c语言里有memset()怎么用?需要啥头文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言里有memset()怎么用?需要啥头文件?相关的知识,希望对你有一定的参考价值。

包含在 <string.h>头文件中

memset为内存填充函数,可以用它对一片内存空间进行初始化, 它可以一字节一字节地把整个数组设置为一个指定的值
其原型为
void *memset(void *s, int v, size_t n);
这里s可以是数组名,也可以是指向某一内在空间的指针;
v为要填充的值;
n为要填充的字节数,通常为sizeof(s);
使用memset时要注意的是,memset是逐字节进行填充,所以s一般为char *型。
参考技术A 需要的头文件在C中是 <string.h>,在C++中 <cstring>,函数原型:void *memset(void *s, char ch, size_t n);将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。 参考技术B 在C语言程序中加入#include "string.h"可以使用这个头文件里包含的(字符串处理)库函数,运行程序进行调试。 参考技术C 在C中 <string.h>
在C++中 <cstring>
char buffer[20];
memset(buffer,0,sizeof(buffer));追问

我要给整形数组清零,也要string头文件?

追答

只要要用memset()就需要。

追问

帮忙看看我的代码给我改一下,oj判我时间超限

不对,发错了

#include
int main()
int n,i,j,a[10001],s,sum, k[10001]=0;
while (scanf("%d",&n)!=EOF)
s=0;我想在这个地方把k数组清零,用memset,清掉n个元素就行;
for (i=0;is)
s=k[i];sum=a[i];
if (2*s>n)
printf("%d\n",sum);
else printf("0\n");

帮我清掉

追答

#include
#include
int main()

int n,i,j,a[10001],s,sum, k[10001]= 0;
while (scanf("%d",&n)!=EOF)

s=0;
memset(k, 0, n);

追问

不对啊,memeset()中的第三个元素不是要用sizeof(字节数)吗

追答

sizeof()求出来的就是这个数组总共有多大
直接赋需要清空的内存空间大小为 n 也没错。

追问

你这个n是字节数吧,我的意思是清掉n个元素,不是清掉n个字节

追答

没理解你什么意思,你试试:memset(k, 0, n * sizeof(int));

本回答被提问者采纳

c 中conio.h是啥头文件?c++中能用吗

参考技术A conio.h不是C标准库中的头文件,在C standard library,ISO C 和POSIX标准中均没有定义。
conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。
大部分DOS,Windows 3.x,Phar Lap,DOSX,OS/2 or Win32平台上的C编译器提供此文件,UNIX 和Linux平台的c编译器通常不包含此头文件。
如果需要使用此头文件,可以从互联网下载。

以上是关于c语言里有memset()怎么用?需要啥头文件?的主要内容,如果未能解决你的问题,请参考以下文章

CString类型要包含啥头文件

string.h是啥头文件

windows.h是啥头文件

C++中怎么用API作图啊 ,要包含啥头文件吗? 在先急等

在VC中调用FORK()文件应该加啥头文件?fork()本来是在linux环境下调用的

VC++中的string类要包含啥头文件?