C语言 如何将一个赋值过的数组置空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 如何将一个赋值过的数组置空相关的知识,希望对你有一定的参考价值。

字符数组已经赋值 如何置空后再次赋值?

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:

char a[10] = "hello";

a[0] = '\\0';

printf("%s", a);

3、编译器运行test.cpp文件,此时字符串被成功置空被打印。

参考技术A

C语言 将一个赋值过的数组置空步骤如下:

1、打开Visual C++ 6.0,新建一个C++ source file源文件。

2、输入以下代码:

#include "stdio.h"

#include "string.h"

void main()

char a[10];

char b[10];

strcpy( a, "abcdefgh");

sprintf(b, "%s", "abcdefgh");

printf("%d\\n",a);

printf("%d\\n",b);

3、图中红色部分,第一个红框是导入的头文件,第二个红框是数组赋值的函数。

4、编译运行,如果出现1 error表示代码错误,错误需自行查找,如图所示编译成功。

5、运行后就将一个赋值过的数组置空。

参考技术B 初学者常用循环将整个数组重新赋值一遍:

for(i=0;i<n;i++)a[i]=0;
但是它的执行效率较低。

高效率的方法是使用memset函数。
memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。
表达式:memset(a,0,sizeof(a))
包含在以下头文件中:<stdlib.h>、<memory.h>或<string.h>

void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

像上面的对a数组重新置空,可以使用以下语句:
memset(a,0,sizeof(a))
参考技术C #include <stdio.h>
#include <string.h>
int main(void)

char a[]='x','y','z';
int i=0;

for(i=0;i<3;i++)
printf("%c\t",a[i]);

memset(a,'\0',sizeof(a)); // 也可以 bzero(a,sizeof(a))

while(i<3)
printf("\n%c\t%c\t%c",a[i]);

return 0;


程序最后输出为空,说明已经被清空了,可以再次赋值。

使用到的函数原型为:void *memset(void *s, int c, size_t n); bzero(void *s, size_t n);
其中c一般为'\0',size_t n 为你所要晴空的数组长度。
除了清空数组外,也空清空缓冲区,此外还有void swab(const void *from,void *to,ssize_t n )和
wchar_*wmemset(wchar_t *wcs,wchar_t wc,size_t n);)也可以,只是比较少用到。前两种比较用得多一些。本回答被提问者采纳
参考技术D memset函数是可以达到你的要求,我一般也使用这个函数,你自己也可以编写一个函数用以自己清零,就是把数组的每一个字符都赋值为“\0”就可以了。

如何将一个一维数组中的所有数都赋值为-1?不用循环。

C语言中,已经定义了一个整型一维数组。然后想将这个整型数组赋值为-1.不用循环。
有的答案写:“一些特殊的数可以用memset,比如全置-1就memset(arr,0xff,sizeof(arr));”
但是看不懂。
请写出详细代码。不用写头文件,直接写主函数,数组名称自定义。
求解答。谢谢大家。

C语言还是C++;C++可以办到。C语言不用循环估计不好办。

C语言,如果是赋值为0,不用说,自然是可以的,只要写TYPE x[100]=0;这样就可以;这对任何类型都适用。

float a[100]=0;
int b[100]=0;

C语言,要赋值成-1的话,对于所有的整数类型([unsigned] char/int/short/long等)都是可以实现的,用memset就可以;非整数类型,如float和double就不行。

C语言,要赋值成1的话,只有char和unsigned char可以做到,用memset,其他类型我还想不出有啥方法。

C++的话,要依次赋值为1,0,-1, 1,0,-1, 1, 0, -1 ...这样的,不用循环都可以办到。追问

C语言,不是C++。是整数类型。能写一下代码吗?如何使用memset?

参考技术A memset(数组名,要赋的值,sizeof(数组名))

以上是关于C语言 如何将一个赋值过的数组置空的主要内容,如果未能解决你的问题,请参考以下文章

C语言 如何将一个二维数组的值全部替换成另一个二维数组

C语言中怎么把一维数组赋给另外一个一维数组

C语言中如何一次给一个数组变量赋值

C语言中如何一次给一个数组变量赋值

C语言如何给用函数二维数组动态赋值

c语言如何给结构体指针赋值?