c语言怎样构造字符函数,c语言中构造函数

如何用c语言实现CString的构造函数,析构函数和赋值函数

类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类

创新互联从2013年成立,是专业互联网技术服务公司,拥有项目网站设计制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元吉安做网站,已为上家服务,为吉安各地企业和个人服务,联系电话:028-86922220

支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设

计和实现。

那么

String

类的原型如下

class

String

{

public:

String(const

char

*str=NULL);

//构造函数

String(const

String

other);

//拷贝构造函数

~String(void);

//析构函数

String

operator=(const

String

other);

//等号操作符重载,赋值函数

ShowString();

private:

char

*m_data;

//字符指针

};

String::~String()

{

delete

[]

m_data;

//析构函数,释放地址空间

}

String::String(const

char

*str)

{

if

(str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'/0';

{

m_data=new

char[1];

*m_data='/0';

}

else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;

{

int

length=strlen(str);

m_data=new

char[length+1];

strcpy(m_data,str);

}

}

String::String(const

String

other)//拷贝构造函数,功能与构造函数类似。

{

int

length=strlen(other.m_data);

m_data=new

[length+1];

strcpy(m_data,other.m_data);

}

String

String::operator

=(const

String

other)

//赋值函数

{

if

(this==other)//当地址相同时,直接返回;

return

*this;

delete

[]

m_data;//当地址不相同时,删除原来申请的空间,重新开始构造;

int

length=sizeof(other.m_data);

m_data=new

[length+1];

strcpy(m_data,other.m_data);

return

*this;

}

String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;

{

coutthis-m_dataendl;

}

测试一下:

main()

{

String

AD;

char

*

p="ABCDE";

String

B(p);

AD.ShowString();

AD=B;

AD.ShowString();

}

c程序编写函数(字符串)

main里面自己写写

#include stdio.h

#include malloc.h

typedef struct snode

{

char data;

struct snode *next;

} LinkStrNode;

int StrLength(LinkStrNode *s) //求串长

{

int i=0;

LinkStrNode *p=s-next;

while (p!=NULL)

{ i++;

p=p-next;

}

return i;

}

LinkStrNode *DelStr(LinkStrNode *s,int i,int j) //串删去

{

int k;

LinkStrNode *str,*p=s-next,*q,*r;

str=(LinkStrNode *)malloc(sizeof(LinkStrNode));

str-next=NULL;

r=str; //r指向新建链表的尾结点

if (i=0 || iStrLength(s) || j0 || i+j-1StrLength(s))

return str; //参数不正确时返回空串

for (k=0;ki-1;k++) //将s的前i-1个结点复制到str

{ q=(LinkStrNode *)malloc(sizeof(LinkStrNode));

q-data=p-data;

r-next=q;r=q;

p=p-next;

}

for (k=0;kj;k++) //让p沿next跳j个结点

p=p-next;

while (p!=NULL) //将结点p及其后的结点复制到str

{ q=(LinkStrNode *)malloc(sizeof(LinkStrNode));

q-data=p-data;

r-next=q;r=q;

p=p-next;

}

r-next=NULL;

return str;

}

int main()

{

SqString s;

int i,j,k;

}

用C语言怎么写个 字符串插入函数

程序的大体思路可以是这样:

str1是原字符串,str2是待插入的字符串,position是待插入的位置,我们可以这样,用一个指针p_cur指向字符串1 str1中的待插入位置position,另一个指针p_end指向字符串1 str1的尾部,每次插入字符前,把str1中从当前位置开始一直到结束字符全部后移一个位置,空出当前位置,然后把要插入的字符放进这个位置,这样就完成了一个字符的插入,重复这个步骤,直到str2被完全插入。

代码如下:

#include stdio.h

#include string.h

void insert_str(char str1[],char str2[],int position)

{

/*

insert_str()函数

功能:将字符串str2插入到str1的position位置处

参数:char str1,char str2 ,int position

返回值:无

*/

int i;

char *p_end,*p_cur,*p;/*p_end指向第一个字符串的尾部,p_cur指向被插入的位置*/

p_end=str1+strlen(str1)-1;

p_cur=str1+position-1;

for(i=0;str2[i]!='\0';i++)

{

for(p=p_end;p=p_cur;p--)

{

*(p+1)=*p;/*从p_cur到p_end的全部元素后移一个位置,此时p_cur指向的位置就空出来了*/

}

*p_cur=str2[i];/*把字符串2中的字符插入空出来的位置*/

p_cur++;/*p_cur下移一个位置*/

p_end++;/*多了一个字符,因此p_end也下移一个位置*/

}

}

void main()

{

char s1[100],s2[20];

int position;

printf("输入字符串1:\n");

gets(s1);

printf("输入插入位置:");

do

{

scanf("%d",position);

while(getchar()!='\n');/*这一句可以把输入position的时候输入的回车去掉*/

}while(position0||positionstrlen(s1));

printf("输入字符串2:\n");

gets(s2);

insert_str(s1,s2,position);

printf("字符串被插入后变成:\n");

puts(s1);

}


当前文章:c语言怎样构造字符函数,c语言中构造函数
文章路径:http://pwwzsj.com/article/dsspcih.html