如何编写函数,用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写函数,用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?相关的知识,希望对你有一定的参考价值。
按照你说的,最好用字符数组来存放字符串这样字符数组名就是这个字符串的指针了,指定位置就可以直接用指针加偏移量来确定
例如 char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
假设将字符串b插入到字符串a的第十位之后(插入的位置超过字符串a的长度就没有意义了)
首先为字符串b腾出空位
int len=strlen(b);
for(int i=0;i<len;i++)
*(a+10+len+i) = *(a+10+i);
然后将b插入到腾出来的空位即可
for(int j=0;j<len;j++)
*(a+10+j) = b[j];
这个是最原理的东西,如果你能理解这个,那么后两个for循环其实可以合并为一个,全部代码为
char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
int len=strlen(b);
for(int i=0;i<len;i++)
*(a+10+len+i) = a[10+i];
*(a+10+i) = b[i];
参考技术A #if 1
//用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?
#include<iostream>
#include <string.h>
int main()
using namespace std;
char str1[] = "11111111 ";
printf("%s\n",str1);
char * name = "tom";
strncpy(str1+3,name,strlen(name));
printf("%s\n",str1);
/************************************************************************/
/* 结果 */
/* 11111111 */
/* 111tom11 */
/************************************************************************/
return 0;
#endif
注意strncpy的第三个参数控制大小
char * strncpy(char *s1,const char*2,size_t n); 该函数把s2指向的字符串复制到s1指向的位置,复制的字符数不超过n个。返回值是s1。空字符后的字符不被复制。如果源字符串的字符数少于n个,在目标串中就以空字符填充。如果源字符串的字符数大于或等于n个,空字符就不被复制。返回值是s1. 参考技术B 额
C语言实现将一个字符串翻转
问题: 对于字符串char* = " abcd efg h"; 要求输出" h efg abcd "; 字符串整体翻转,但是里面每一个单词的顺序不翻转
思想:<1>取得原始字符串的长度,
<2>将字符串第一个出现空格位置的索引记录下来,并且放到一个整形数组里,例如上面的
出现空格的位置分别是0 5 11 那么记录数组int b[j]; b[0]=0 b[1] =5; b[2]=11;
<3>针对每一个空格开始出现的位置,将数组b[j] 逆序输出,例如
" h"输出 "h "
" efg" 输出"efg "
" abcd"输出“abcd "
<4>将上面的输出用strcat拼接起来就是得到的目的字符串
代码如下:
#include <iostream> #include <string.h> using namespace std; #define ARRAY_LEN 10 int main() { char* a=" OPKI am test abcdef "; int len = strlen(a); cout<<"original---"<<a<<"---"<<endl; cout<<"str len is "<<len<<endl; int firstempty = false; int b[ARRAY_LEN]; int j = 0; for (int i = 0; i < len; i++) { if (i == 0) { if (a[i] == ‘ ‘) { b[j] = 0; j++; firstempty = true; } } int temp = i + 1; if (a[i] != ‘ ‘ && a[temp] == ‘ ‘) { b[j] = temp; j++; } } cout<<"j is "<<j<<endl; cout<<"---change--"; for (int k = j; k > 0; k--) { int tmp = b[k-1]; int i = 0; bool flag = false; while(a[tmp] != ‘\0‘) { char ch = a[tmp]; if (ch != ‘ ‘) { flag = true; cout<<ch; } else { if (!flag) { i++; } else { break; } } tmp++; } for (int t = i; t >0; t--) { cout<<‘ ‘; } } if (!firstempty) { cout<<*a; while(*(++a) != ‘ ‘) cout<<*a; } cout<<"---"<<endl<<"end"<<endl; return 0; }
以上是关于如何编写函数,用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?的主要内容,如果未能解决你的问题,请参考以下文章