memset+strcpy+strncpy的函数详解以及字符数组输出的特殊情况

本文详细介绍了C语言中的memset、strcpy和strncpy函数的使用方法,包括它们的功能、参数及注意事项。memset常用于初始化数组和清空结构体,strcpy用于字符串复制,但需要注意内存溢出问题,strncpy则提供了一种限制复制字节数的安全方式。文章还探讨了字符数组输出遇到特殊ASCII码(如0、32、10、9)时的情况。
摘要由CSDN通过智能技术生成

memset:

头文件:#include在<string.h>

原型:   void *memset(void *s, int c, size_t n);

将已开辟内存空间的s所指向的每一块内存中的每一个字节全部设定为c为ASCII码!!!

The  memset()  function  fills  the  first  n  bytes of the memory area  pointed to by s with the constant byte c


原型函数:

void* memset(void* s, int c, size_t n){
                     unsigned char* p = (unsigned char*) s;

                     while (n > 0) {
                                *p++ = (unsigned char) c;
                                  --n;
                      }

                     return s;
           }


1, memset常被用来做初始化数组

#include <stdio.h>                                                                                                                              
#include <string.h>

int main()
{
        int i;
        char p[5];
        for(i = 0; i<5;i++){
                printf("%c\n", p[i]);
        }
        return 0;
}

运行结果:

可以看到我们的中的p[5]数组没有初始化的话,会得到一些奇怪的东西,则可能会导致我们程序的错误运行,如果我们不初始化的话!!!

为了避免这种情况,我们可以加入:

memset(p, '0', strlen(p));
        for(i = 0; i<5;i++){
                printf("%c\n", p[i]);                                                                                                           
        }
这样,我们看的话,就可以得到正确的结果了,

但是要注意的是,memset的第二个参数是char类型的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值