【C语言学习记录】字符串

本文详细介绍了C语言中的字符串基础知识,包括字符串的结束标志'',sizeof与strlen的区别,动态开辟字符串的方法如malloc、realloc和free,以及字符串常用的API如strcpy、strncpy、strcat、strcmp的使用,并提供了自己实现这些函数的示例。
摘要由CSDN通过智能技术生成

一、初识

在这里插入图片描述

二、字符串的结束标志’ \0 ’

在这里插入图片描述

三、sizeof和strlen的区别

strlen计算有效字符长度、sizeof计算所有字符空间长度
在这里插入图片描述

四、动态开辟字符串

1、malloc

动态开辟内存空间;后记得释放所分配的内存空间;让指针指向NULL,防止悬挂指针;

2、realloc

扩容 函数原型void *realloc(void *ptr, size_t size)

3、free

释放,防止空间泄露,free之后让指针指向NULL,防止悬挂指针

4、memset

内存空间初始化

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
malloc:动态开辟内存空间;后记得释放所分配的内存空间;让指针指向NULL,防止悬挂指针
strcpy:拷贝   char *strcpy(char* dest, const char *src);//从src拷贝到dest去
realloc:扩容  void *realloc(void *ptr, size_t size);
memset:     memset(p,'\0',12);   //内存空间初始化
*/

int main()
{
      
    char *p;//野指针
	p = (char *)malloc(1);//p有了具体的内存指向

    *p = 'c';
    printf("%c\n",*p);

	free(p);//动态开辟后重新指向,记得释放所分配的内存空间。不然存在内存泄露的风险
	p = NULL; //free之后让指针指向NULL,防止悬挂指针

	p = (char *)malloc(12); //开辟12字节的内存空间
    if(p == NULL){
             //通常养成习惯对malloc返回值做NULL判断,申请失败了
		printf("malloc error\n");
		exit(-1);
	}
	memset(p,'\0',12);   //内存空间初始化

    printf("扩容地址:%x\n",p);
    int len =strlen("DT1213_STC8A8K64D4");
    int newLen = len - 12 + 1;
    p = realloc(p,newLen);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值