/*
* string.c
*
* Created on: 2010-12-24
* Author: qiang
*/
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
//字符串转换:十进制整数转换成字符串
char* itoa(int num,char *str)
{
int len=20;
int i=0,j=0;
char tmp[len]; //临时存放数据
while(num)
{
tmp[i]=num%10+'0'; //除10取余,tmp存放的是倒序str
i++;
num/=10;
}
tmp[i]=0; //字符串结束符
printf("tmp is %s \n",tmp);
i-=1;
while(i>=0)
{
str[j++]=tmp[i--];
}
return str;
}
//字符串拷贝函数
char* mystrcpy(char* dest,const char* src) //为了避免src无意中被修改,我们加入const加以修饰
{
char* address=dest; //存储目标起始地址
while((*src) != '\0')
{
*dest=*src;
dest++;
src++;
}
*dest = '\0';
return address;
}
//字符串删除函数
char* delsome( char* src, char* del,char* dest)
{
int tmp=0;
char *src2=src; //字符串存储到静态数据区域
char *p = del; //将要删除的字符串暂存到*p中
while(*src2) //字符串为比较完
{
while(*p) //del字符串没结束
{
if(*src2 == *p) //字符相同,跳出循环;进行下次比较
break;
p++; //比较字符向后移动
}
if(*p=='\0') //字符串结束符-'\0',说明src中没有p中的元素
{
dest[tmp++]=*src2; //存储提取的数据
}
src2++;
p = del; //重新赋值对比
}
dest[tmp]='\0'; //这里我们需要加入结束字符
return dest;
}
int main()
{
/*
//整数转换成字符串形式
int num;
char str[20];
printf("请输入要转换的十进制数字: \n");
scanf("%d",&num);
itoa(num,str);
printf("转换后的字符串为:%s \n",str);
*/
/*
//字符串转换成整数形式
int num=0,len=7;
char str[]="123456";
//转换开始
int i,j;
for(i=0;i<len-1;i++)
{
num=num*10+(str[i]-'0');
}
printf("123456 转换后的整数为: %d \n",num);
*/
/*
//字符串拷贝函数
char src[]="abcdefg";
char dest[8];
printf("要复制的字符串: %s \n",src);
mystrcpy(dest,src);
printf("复制后的字符串:%s \n",dest);
*/
//字符串删除某些特定字符
char src[20]="askbskbc";
printf("原字符串:%s \n",src);
char del[20]="ask";
printf("要删除的字符包含: %s \n",del);
char dest[20];
delsome(src,del,dest);
printf("删除后的字符串为:%s \n",dest);
/*
//测试字符串结束符标志- \0 (0)
char a[4]="abc";
char *str=a;
while(*str) //字符串结束符:\0(0)
{
str++;
}
*/
return 0;
}
|