C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(2)
来源:互联网 发布:js购物车结算代码 编辑:程序博客网 时间:2024/05/01 15:32
前言
接上篇内容,这次会描述字符串的安全追加,建议一样,看懂代码,不要盲目调试,多debug,多查看内存
代码及其解释
#include<stdio.h>#include<string>#include<iostream>using namespace std;#define SIZE 10/* 在使用这些函数时,应该加以封装来达到自己想要的效果 *///dn表示dest“已分配”(可用的)的空间//如dest[10]="abc";那么它的可用空间应该是10char* my_strncat(char *dest,const char *source, int dn){ int slen = strlen(source); int dxlen = dn - strlen(dest) - 1; if (dxlen >= slen) { return strncat(dest, source, slen); } else { return strncat(dest, source, dxlen); } return 0;}int main(){ /* 从简单入手 */ /* C CHAR[] TO C CHAR[] */ /* C CHAR*(指向的是常量) TO C CHAR[] */ char cchar1[SIZE] = "abc"; //dest char cchar2[3] = "de"; //source1 char cchar3[] = "fghiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"; //source2 char *str1 = "jk"; //source3 char *str2 = "lmnoooooooooooooooooooooooooooooooooooo"; //source4 //my_strncat(cchar1, str2, SIZE); //cout << cchar1 << endl; /* 在c++字符串中追加字符串*/ string cppstr1 = "123"; string cppstr2 = "555"; //cppstr1.append(cchar2); //cppstr1.append(str1); //cppstr1.append(cppstr2); //cout << cppstr1 << endl; /* c++字符串追加到字符数组 */ char cchar4[SIZE] = "abcd"; //dest string cppstr3 = "eturns a pointer to the destination string. No return value is reserved to indicate a"; //source1 string cppstr4 = "et"; //source2 my_strncat(cchar4, cppstr4.c_str(), SIZE); cout << cchar4 << endl; system("pause"); return 0;}
小系列文章小节
一直以为字符串就那么几个函数,玩玩api就好,没想到要注意那么多,之后自己去整理相关内容,一遍遍调试,折腾了挺久的,最终觉得,要处理好字符串和字符数组,主要还是其原理上,然后根据其内存情况来编程,而不能说一步到位,必须视需求来处理
0 0
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(2)
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(1)
- C 字符串指针与字符数组
- C语言字符串指针变量与字符数组的区别
- C语言字符串指针变量与字符数组的区别
- C语言字符串指针与字符数组的区别
- c语言中 字符数组与字符串字面值 字符数组与字符指针数组
- C#char字符数组与字符串相互转换
- 数组、指针、字符串(三)探究字符数组、字符指针和字符串的相互联系
- c语言中字符指针与字符数组的区别
- c: string 字符指针与字符数组的区分
- 字符、字符数组(字符串)与指向字符串的指针
- C字符数组与字符串
- C 字符数组 字符指针
- C语言,结构体中字符串的声明(采用字符指针还是字符数组)
- 字符串与字符数组的区别(摘自c++primer)
- C语言 字符数组和字符串指针的理解
- 【C++】字符串——字符数组和字符指针浅谈
- vijos1106侦探推理&&Noip提高组2003
- 2013_changsha_onsite
- Android RecyclerView使用完全解析-体验艺术般的控件
- Android 抽奖 GridView 只显示周围一圈的item 纯算法实现
- 关于滚动条的几个参数
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(2)
- 数据结构之栈(C语言实现)
- hdu 2141 Can you find it?(二分)
- Apple公司Darwin流式服务器源代码分析(一)
- DM8168 DVRRDK软件框架研究
- Maven手动添加本地jar包
- HDU 2094 产生冠军(map)
- 全栈工程师之路(二)—— JavaScript(网页前端脚本语言)
- 小波变换基础