本帖最后由 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天_字符串处理函数编写
|