c语言中的string.h头文件中虽然有这三个函数,但老师让我们自己写函数,所以添加了一点自己的想法写了这三个函数。
strcat:
#include <stdio.h>
void str_cat(char* p,char* q)
{
while((*p) != '\0')//指针p移动到front尾
{
p++;
}
while((*q) != '\0')//将later每个字符串按个添加到front后
{
*p = *q;
p++;
q++;
}
*p = '\0';
}
int main()
{
char front[128] = {0};//前一个字符串
char later[64] = {0};//后一个字符串
printf("输入两个字符串:\n");
scanf("%s %s",front,later);
str_cat(front,later);
printf("结果为:\n");
printf("%s\n",front);
return 0;
}
strcpy:
#include <stdio.h>
void str_cpy(char* p,char* q)
{
while((*q) != '\0')//将later的每个字符赋值给对应位置的front字符
{
*p = *q;
p++;
q++;
}
*p = '\0';
}
int main()
{
char front[128] = {0};//前一个字符串
char later[64] = {0};//后一个字符串
scanf("%s %s",front,later);
str_cpy(front,later);
printf("%s\n",front);
return 0;
}
strcmp:
#include <stdio.h>
int str_cmp(char* p,char* q)
{
int front = 0;//记录front asc码总值
int later = 0;//同上
while((*p) == (*q) && (*p) != '\0' && (*q) != '\0')
{
p++;
q++;
}
if((*p) == '\0' && (*q) == '\0')//两字符串完全相同只有一种情况
return 0;
else
{
if((*p) == '\0' && (*q) != '\0')
return -1;
if((*q) == '\0' && (*p) != '\0')
return 1;
while((*p) != '\0')
{
front = front + *p;
p++;
}
while((*q) != '\0')
{
later = later + *q;
q++;
}
if(front > later)
return 1;
if(front < later)
return -1;
if(front == later)//字符串不同但asc码总值相同返回-5
return -5;
}
}
int main()
{
char front[128] = {0};//前一个字符串
char later[64] = {0};//后一个字符串
scanf("%s %s",front,later);
printf("%d\n",str_cmp(front,later));
return 0;
}
都是调用指针进行赋值,是对于指针的简单运用,供大家参考。