码迷,mamicode.com
首页 > 其他好文 > 详细

字符串相关操作

时间:2015-07-20 12:19:13      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

  1. 实现字符串相关函数:

Strcpy(), strlen(), strcat(), atoi()

 

Strcpy():

#include<stdio.h>
char *strcpy(char *strDest,char *strsrc)
{
if(NULL==strDest||NULL==strsrc) //判断参数的有效性
{
return NULL;
}
char *strTemp=strDest; //保存目标字符串的首地址,如果不保存,直接对strDest进行操作,那么strDest都不知道指到哪去了,无法返还strDest的首地址
while((*strDest++=*strsrc++)!=‘\0‘);/*这个分号要注意,如果不加;
的话,后面的return是while循环的循环体*/ //这个while等价于下面的while循环语句
/*while(strsrc!=‘\0‘)
{
strDest=strsrc;
strsrc++;
strDest++;
}*/
return strTemp;
}
int main()
    {
    char src[]="hello,world";
    char Dest[20];
    strcpy(Dest,src);
    printf("%s\n",Dest);
    return 0;
    }

 

//strlen的实现
#include<stdio.h>
int strLen(const char *strsrc)
{
int len=0; //保存长度
while(*strsrc!=‘\0‘)
{
strsrc++;
len++;
}
return len;
}
int main()
{
char src[]="hello,world";
printf("%d\n",strLen(src));
return 0;
}
/* strlen是计算字符串的长度,不包含‘/0‘,遇到‘/0‘停止
* 输出结果:11

 

strcat()

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *strCat(char *dest,char *src)
{
char *p=dest; //保存目标字符串的首地址,供最后返回使用
while(*dest!=‘\0‘)
{
dest++;
} //此时的dest指向目标数组的‘\0‘
while(*dest=*src)
{
dest++; //dest向一个新空间移,src向之前的dest移
src++;
}
return p;
}
int main()
{
char p[10]="12345";
char q[10]="678";
strCat(p,q);
printf("%s\n",p);
return 0;
}

 

 

/*输出结果:12345678
 
 
atoi()
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int my_atoi(char *pstr)
{
int Ret_Integer=0;
int Integer_sign=1;
if(pstr==NULL)
{
printf("Pointer is NULL\n");
return 0;
}
while(isspace(*pstr)==0)
{
pstr++;
}
if(*pstr==‘-‘)
{
Integer_sign=-1;
}
if(*pstr==‘-‘||*pstr==‘+‘)
{
pstr++;
}
while(*pstr>=‘0‘&&*pstr<=‘9‘)
{
Ret_Integer=Ret_Integer*10+*pstr-‘0‘;
pstr++;
}
Ret_Integer=Integer_sign*Ret_Integer;
return Ret_Integer;
}
int main()
{
char a[]="-100";
char b[]="456";
int c=0;
int my_atoi(char*);
c=atoi(a)+atoi(b);
printf("atoi(a)=%d\n",atoi(a));
printf("atoi(b)=%d\n",atoi(b));
printf("c=%d\n",c);
return 0;
}

/* atoi函数原型:int atoi(const char *nptr)
* atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数
* int main(void)
* {
* int n;
* char *str = "12345.67";
* n = atoi(str);
* printf("int=%d\n",n);
* return0;
* }
* 输出:
* int=12345
*
*
*
*
* int main()
* {
* char a[] = "-100";
* char b[] = "123";
* int c;
* c = atoi(a) + atoi(b);
* printf("c=%d\n", c);
* return 0;
* }
* 执行结果:
* c = 23
*
*
* 本程序运行结果:
* atoi(a)=-100
* atoi(b)=456
* c=356
*
  • 从键盘上输入一行字符串,把改行字符串按单词旋转:

 

Input: I am a student

 

Output: student a am I

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *reverse_word(const char *str)
{
int len=strlen(str);
//printf("len=%d",len);
char *restr=(char *)malloc(sizeof(char)*(len+1));//申请restr的内存空间
strcpy(restr,str);
printf("%s\n",restr);
int i,j;
for(i=0,j=len-1;i<j;i++,j--)
{           //整个字符串逆转    
char temp=restr[i];
restr[i]=restr[j];
restr[j]=temp;
}
int k=0;
while(restr[k]!=0)
{
i=j=k;
while(restr[j]!=‘ ‘&&restr[j]!=0) //遇到空格就是下一个字符串了
j++;
k=j+1;
j--;
for(;i<j;i++,j--)
{           //每个字符串逆转
char temp=restr[i];
restr[i]=restr[j];
restr[j]=temp;
}
}
printf("%s\n",restr);
}

 

 

int main()
{
char *str="I love china";
char *rstr=reverse_word(str);
return 0;
}

 

字符串相关操作

标签:

原文地址:http://www.cnblogs.com/FG123/p/4660761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!