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

C基础(36——40)

时间:2016-08-02 06:40:14      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:c

技术分享

//两个指针
#include <stdio.h>
#include <stdlib.h>

char* Reverse(char * s)
{
                 char* left=s ;
                 char* right=s ;

                 while(*right)
                                right++;
                right--;

                 while(right>left)
                {
                                 //swap—>创建临时变量
                                 /*char tmp=*left;
                                *left=*right;
                                *right=tmp;*/

                                 //swap—>异或
                                *left=*left^*right;
                                *right=*left^*right;
                                *left=*left^*right;

                                left++;
                                right--;
                }

                 return s ;
}
void test()
{
                 char str[]="hello,world-coming!" ;  //注意此处不能用char* str="hello,world-coming!",因为指针存于常量区,不能去改变它

                printf( "%s\n",Reverse(str));
}
int main()
{
                test();
                system( "pause");
                 return 0;
}


////递归
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//
//void Reverse(char* str,int left,int right)
//{
//             if(left>=right)
//                             return;
//
//             char tmp=str[left];
//             str[left]=str[right];
//             str[right]=tmp;
//
//             Reverse(str,left+1,right-1);
//}
//void test()
//{
//             char str[]="hello,world-coming!";
//             int len=strlen(str)-1;
//
//             Reverse(str,0,len);
//
//             printf("%s\n",str);
//}
//int main()
//{
//             test();
//             system("pause");
//             return 0;
//}


////数组
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//
//char* Reverse(char* str,int left,int right)
//{
//             while(left<right)
//             {
//                             char tmp=str[left];
//                             str[left]=str[right];
//                             str[right]=tmp;
//
//                             left++;
//                             right--;
//             }
//
//             return str;
//}
//void test()
//{
//             char str[]="hello,world-coming!";
//             int len=strlen(str);
//
//             printf("%s\n",Reverse(str,0,sizeof(str)/sizeof(str[0])-2));  //sizeof(str)/sizeof(str[0])是算上‘\0‘的
//}
//int main()
//{
//             test();
//             system("pause");
//             return 0;
//}

结果:

技术分享



技术分享

#include <stdio.h>
#include <stdlib.h>

int SubStr(char dst[],char src[],int start,int len)
{
                 char* first=src +start;
                 char* end=src +start+len;
                 int i=0;

                 while(*first && first<end /*&& i<len*/ )
                {
                                 dst[i]=src [start+i];
                                first++;
                                i++;
                }

                 dst[i]=‘\0‘ ;  //切记

                 return i+1;  //包括‘\0‘
}

//变量较少的实现方法
//int SubStr(char dst[],char src[],int start,int len)
//{
//             int i=0;
//             
//             while(len-- && src[start]!=‘\0‘)
//                             dst[i++]=src[start++];
//
//             dst[i]=‘\0‘;
//
//             return i+1;
//}
void test()
{
                 char str[]="hello world" ;
                 char target[100];

                printf( "%d\n",SubStr(target,str,4,20));
                printf( "%s\n",target);
}
int main()
{
                test();
                system( "pause");
                 return 0;
}

结果:

技术分享


技术分享

#include <stdio.h>
#include <stdlib.h>

void test()
{
                 int c;
                 while((c=getchar())!=‘\n‘ )
                {
                                 if(c>=‘A‘ && c<=‘Z‘)
                                                c+=32;

                                putchar(c);
                }
                printf( "\n");
}
int main()
{
                test();
                system( "pause");
                 return 0;
}

结果:

技术分享


技术分享

技术分享

#include <stdio.h>
#include <stdlib.h>

void test()
{
                 int c;
                 while((c=getchar())!=EOF )
                {
                                 if(c>=‘A‘ && c<=‘z‘)
                                                c= ‘A‘+‘z‘ -c;

                                putchar(c);
                }
}
int main()
{
                test();
                system( "pause");
                 return 0;
}

结果:

技术分享


技术分享

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

//把dst当成一个指针
//char* Strcpy(char* dst,const char* src)
//{
//             assert(src);
//             int i=0;
//
//             while(*src)
//             {
//                             dst[i++]=*src++;
//             }
//
//             dst[i]=‘\0‘;
//
//             return dst;
//}
//把dst当指针
char* Strcpy(char * dst,const char* src)
{
                assert(src);
                assert(dst);
                 char* d=dst;

                 while(*src)
                                *d++=*src++;

                *d= ‘\0‘;

                 return dst;
}
//库函数的实现方法
//char* Strcpy(char* dst,const char* src)
//{
//             assert(src);
//             assert(dst);
//             char* d=dst;  //先保存住dst的首地址,让d移动
//
//             while((*d++=*src++)!=‘\0‘)
//                             ;
//
//             return dst;
//}
void test()
{
                 char* str="hello world,change the WORLD" ;
                 char dest[100];

                printf( "%s\n",Strcpy(dest,str));
}
int main()
{
                test();
                system( "pause");
                 return 0;
}

结果:

技术分享


本文出自 “追寻内心的声音” 博客,请务必保留此出处http://ljy789.blog.51cto.com/10697684/1833292

C基础(36——40)

标签:c

原文地址:http://ljy789.blog.51cto.com/10697684/1833292

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