| 本帖最后由 Guido 于 2020-11-10 21:49 编辑 
 1.编写系统函数strcpy
 
 //编写字符串拷贝函数:void StrCopy(char* pDest,char *pSrc)
//在main函数中调用以上函数,从来源字符串向目标字符串复制所有的字符包括结尾符。
//例如:
//int main()
//char s1[32],s2[32] = "吕鑫老师:”;
//strcpy(s1,"@$#%abc123xyz");//从栈内数组
//puts(s1);
//StrCopy(s1,s2);//从常量区
//puts(s1);
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void StrCopy(char *pDest, char *pSrc)  //利用的是下标法
{
        int i = 0;
        do
        {
                pDest[i] = pSrc[i];
        } while (pSrc[i++]);
}
int main()
{
        char s1[32], s2[32] = "吕鑫老师:";
        strcpy(s1, "@$#%abc123xyz");   //调用的是系统函数,且这一字符串存储在栈内,因此是由栈传递向s1的
        puts(s1);
        StrCopy(s1, s2);//调用自己写的函数
        puts(s1);
        return 0;
}
逆向学习第16天_字符串处理函数编写   
 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void StrCopy(char *pDest, char *pSrc)  //利用的是指针法
{
        do
        {
                *pDest = *pSrc;            //如果不加*  例如是 pDest=pSrc 就是将整个字符串赋值过去,只有加了*之后,才是一个一个送过去
                pDest++;
        } while (*(pSrc++));             //这里的pSrc++就是让下次取字符的时候,去取后面的字符
}
int main()
{
        char s1[32], s2[32] = "吕鑫老师";
        strcpy(s1, "@$#%abc123xyz");   //调用的是系统函数,且这一字符串存储在栈内,因此是由栈传递向s1的
        puts(s1);
        StrCopy(s1, s2);//调用自己写的函数
        puts(s1);
        return 0;
}
 逆向学习第16天_字符串处理函数编写   2.编写系统函数strcat
 
 //编写字符串追加(或者叫字符串连接)函数:
//void StrCat(char *pDest,char *pSrc)
//在main函数中调用以上函数,从来源字符串向目标字符串复制所有的字符包括结尾符。
//int main()
//{
//char s1[32],s2[32] = "吕鑫老师:‘
//StrCopy(s1,s2);//从栈内数组
//puts(s1);
//StrCat(s1,"@$#%abc123xyz");//从常量区
//puts(s1);
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void StrCat(char *pDest,char *pSrc)//利用的是下标法
{
        int i = 0;
        int j = 0;
        while (pDest[i])
        {
                i++;
        }
        do
        {
                pDest[i++] = pSrc[j];
        } while (pSrc[j++]);
}
int main()
{
        char s1[32]=" 吕鑫老师:",s2[32] = "NBNBafasf";
        StrCat(s1, s2); //自己编写的函数
        puts(s1);
        return 0;
}
 逆向学习第16天_字符串处理函数编写   
 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void StrCat(char *pDest, char *pSrc)//利用的是指针法
{
        while (*pDest)
        {
                pDest++;
        }
        do
        {
                *pDest = *pSrc;
                pDest++;
        } while (*(pSrc++));
}
int main()
{
        char s1[32] = " 吕鑫老师:", s2[32] = "NB~!";
        StrCat(s1, s2); //自己编写的函数
        puts(s1);
        return 0;
}
 逆向学习第16天_字符串处理函数编写   2.编写系统函数strcmp
 
 //编写strcmp,这个函数是根据ascall码的大小一次进行比较的
//strcmp(s1,s2)
//s1>s2  返回正值   s1=s2  返回0   s1<s2  返回赋值
#include<stdio.h>
int StrCmp(char *arg1, char *arg2)//用下标法
{
        int i = 0;
        while (arg1[i] == arg2[i] && arg1[i]!='\0' && arg2[i]!='\0')
        {
                i++;
        }
        if (arg1[i] > arg2[i])
                return 1;
        else if(arg1[i] == arg2[i])
                return 0;
        else return -1;
}
int main()
{
        char s1[32] = "abcdef";
        char s2[32] = "abcde";
        int n;
        n = StrCmp(s1, s2);
        return 0;
}
逆向学习第16天_字符串处理函数编写   
 //编写strcmp,这个函数是根据ascall码的大小一次进行比较的
//strcmp(s1,s2)
//s1>s2  返回正值   s1=s2  返回0   s1<s2  返回赋值
#include<stdio.h>
int StrCmp(char *arg1, char *arg2)//用指针法
{
        while (*arg1 == *arg2&& *arg1!= '\0' && *arg2!= '\0')
        {
                arg1++;
                arg2++;
        }
        if (*arg1>*arg2)
                return 1;
        else if (*arg1== *arg2)
                return 0;
        else return -1;
}
int main()
{
        char s1[32] = "abcd";
        char s2[32] = "abcd";
        int n;
        n = StrCmp(s1, s2);
        return 0;
}
 逆向学习第16天_字符串处理函数编写   
 
 |