题目:
源码:
#include <stdio.h>
//判断字符串有效字符个数strlen
int mystrlen(char *a){
int i=0;
while(*a++!='\0')
i++;
return i;
}
//拷贝字符串strcpy
void mystrcpy(char *c0,const char *c1){
for(;*c1!='\0';)
*c0++ = *c1++;
*c0='\0';
}
//比较字符串strcmp
//条件:
//两个字符串从下标0开始依次比较
//直到两个字符不相等,返回差值(字符串1的字符减去对应的字符串2的字符)
//或比较到两个字符串同时结束(遇到'\0'),俩字符相等。
int mystrcmp(const char* c0,const char* c1){
int res=0,i=0;
for(;*c0==*c1 && *c1!='\0';c0++,c1++);
res = *c0-*c1;
return res;
}
//拼接字符串strcat
void mystrcat(char *c0,const char *c1){
for(;*c0!='\0';c0++);
for(;*c1!='\0';c1++,c0++)
*c0=*c1;
*c0='\0';//给末尾加空字符
}
//置空字符串
void set_zero(char* a){
for(int i=0;i<1999;i++)
*a++='\0';
*a='\0';
}
int main(int argc, const char *argv[])
{
int a=0,b=0;
char c0 [2000] = "";
char c1 [2000] = "";
while(b!=1){
printf("请选择你想执行的操作:\n0.退出\n1.计算长度\n2.复制\n3.比较\n4.连接\n");
scanf("%d",&a);
getchar();
switch(a){
case 0:{
b=1;break;
}
case 1:{
printf("请输入一串字符\n");
gets(c0);
int num = mystrlen(c0);
printf("输入字符串有效长度为:%d\n",num);
break;
}
case 2:{
printf("请输入一串字符(拷贝前)\n");
gets(c0);
int num = mystrlen(c0);
printf("请输入一串字符,该字符串将会被拷贝到上一字符串中\n");
gets(c1);
int a=mystrlen(c0),b=mystrlen(c1);
mystrcpy(c0,c1);
printf("拷贝后的字符串为:%s\n",c0);
printf("该数组实际存储内容为:");
for(int i=0;i<a||i<b;i++)
printf("%c",c0[i]);
putchar(10);
break;
}
case 3:{
printf("请输入一串字符(字符串1)\n");
gets(c0);
int num = mystrlen(c0);
printf("请输入一串字符(字符串2),该字符串会与上一字符串比较\n");
gets(c1);
printf("返回值大于0表示字符串1大,等于0表示字符串相等,小于零表示字符串1小\n返回值为:%d\n",mystrcmp(c0,c1));
break;
}
case 4:{
printf("请输入一串字符(连接前)\n");
gets(c0);
int num = mystrlen(c0);
printf("请输入一串字符,该字符串将会被连接到上一字符串中\n");
gets(c1);
mystrcat(c0,c1);
printf("粘贴后字符串为:%s\n",c0);
break;
}
}
set_zero(c0);
set_zero(c1);
}
return 0;
}
对于第六次的作业进行了改进······