c语言中如何将结构中变量清空

struct data {char num[100];char name[100];int n;}这样的变量如何清空
2024-12-02 22:04:53
推荐回答(5个)
回答1:

1、首先,我们写好整个函数的框架,也就是头文件和Main函数。

2、然后我们写上指针变量的类型。

3、然后我们输入星号标识符。

4、接下来我们输入指针变量名。

5、接下来分号结束。

6、接下来我们就可以将直接拿来使用。

回答2:

1、首先,我们首先定义四个变量。

2、然后我们开始编写需要查找的范围。

3、然后我们开始编写判断函数。

4、接下来我们编写输出函数,用printf函数代表输出。

5、接下来我们点击叹号,就代表了开始运行测试。

6、这时候我们便可以看到测试结果。

回答3:

可以利用memset函数对变量进行清空操作。

扩展资料

memset()函数原型是extern void *memset(void *buffer, int c, int count)       

buffer:为指针或是数组,

c:是赋给buffer的值,

count:是buffer的长度.

这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer))

Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;

例:char a[100];memset(a, ‘/0’, sizeof(a));

memset可以方便的清空一个结构类型的变量或数组。

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的内存地址溢出。

参考资料来源:百度百科—memset

回答4:

C语言中,使用memset函数来进行初始化。

扩展资料:

memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

常见错误:

第一:memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。

第二:memset(void *s, int ch,size_t n);中ch实际范围应该在0~~255,

因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节,比如int a[5]赋值memset(a,-1,sizeof(int )*5)与memset(a,511,sizeof(int )*5) 所赋值的结果是一样的都为-1;

因为-1的二进制码为(11111111 11111111 11111111 11111111)而511的二进制码为(00000000 00000000 00000001 11111111)后八位都为(11111111),所以数组中每个字节,

如a[0]含四个字节都被赋值为(11111111),其结果为a[0](11111111 11111111 11111111 11111111),即a[0]=-1。

因此无论ch多大只有后八位二进制有效,而后八位二进制 [2]  的范围在(0~255)中改。而对字符数组操作时则取后八位赋值给字符数组,其八位值作为ASCII [3]  码。

第三: 搞反了 ch 和 n 的位置.

一定要记住如果要把一个char a[20]清零,一定是 memset(a,0,20*sizeof(char));

而不是 memset(a,20*sizeof(char),0);

第四: 过度使用memset.

参考资料:百度百科——memset

回答5:

C语言中用memset()函数可清空结构体中的数据

如:

struct data 
{
char num[100];
char name[100];
int  n;
};
struct data  a, b[10];

memset( &a, 0, sizeof(a) ); //注意第一个参数是指针类型,a不是指针变量,要加&
memset( b, 0, sizeof(b) );  //b是数组名,就是指针类型,不需要加&

memset为内存填充函数,包含在头文件中,可以用它对一片内存空间逐字节进行初始化,其原型为  void *memset(void *s, int v, size_t n);  
这里s可以是数组名,也可以是指向某一内在空间的指针;

v为要填充的值;

n为要填充的字节数;