DAY 5 学习日记&strcat函数&strcpy函数

本文介绍了C语言中的strcat函数用于连接两个字符数组,以及strcpy函数用于复制字符数组,同时强调了strcpy中的缓冲区溢出问题及其防范。还提及了进制转换和动态规划相关的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strcat函数

作用

把两个char类型数组连起来。

赋值

默认接到第一个字符串中,可以自己赋值给另一个字符串。

原型

extern char *strcat(char *dest, const char *src);

头文件

在C语言中存在于<string.h>头文件中。

在C++则存在于<cstring>头文件中。

注意

1.

目标字符数组必须足够大,大到能容纳另一个字符串。

2.

两个字符数组不能重叠

代码实战

#include <iostream>
#include <cstring>
#include <cstdlib>
int main()
{
    using namespace std;
    char d[20] = "GoldenGlobal";
    char* s = "View";
    strcat(d,s);
    cout << d << endl;
    system("pause");
    return 0;
}

输出: GoldenGlobalView

strcpy函数

用途

复制另一个字符数组

赋值

strcpy(a,b),把b复制到a

原型

char *strcpy(char *dest, const char *src)

头文件

#include <cstring>

注意

strcpy 函数中的缓冲区溢出问题

缓冲区的溢出就是程序在动态分配的缓冲区中写入了太多的数据,使这个分配区发生了溢出。一旦一个缓冲区利用程序能将运行的指令放在有 root权限的内存中,运行这些指令,就可以利用 root 权限来控制计算机了。

当程序编写时,加入错误检查,可以及时地发现错误,并处理出现的异常。当写strcpy函数时,首先要尽可能地使目的缓冲区的长度足够长,以及检测目的缓冲和源缓冲。若目标缓冲区或源缓冲区为空,则程序在异常处理中终止。

若源字符串没有目的的缓冲区长度长,还应在异常处理中结束程序,以避免发生溢出情况。很难说,没有一个程序绝对安全,strcpy函数只能使用尽可能安全的方法。函数将在任何时候结束,只要输入的字符串没有空格结束。这个探测很容易。但这种探测并不能保证该功能的安全性。

 代码实战

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char src[40];
    char dest[100];
    memset(dest, '\0', sizeof(dest));
    strcpy(src, "taoyiwei17_QFOI");    
    strcpy(dest, src);
    printf("%s\n", dest);
    return 0;
}

输出:taoyiwei17_QFOI

DAY 5 学习日记

dp第二讲,下次开个专栏讲dp(话说进制转换的坑我还没填的)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值