c语言小练习——字符串长度、拷贝、拼接、比较

/*
使用c语言知识实现下面程序:
1,实现strlen函数的功能
2,实现strcpy函数的功能
3,实现strcat函数的功能
4,实现strcmp函数的功能
不允许使用已有的str函数
*/

  1 #define _CRT_SECURE_NO_WARNINGS
  2 #include<stdio.h>
  3 #include<string.h>
  4 #include<stdbool.h>
  5 #include<stdlib.h>
  6 #include<math.h>
  7 /*
  8     使用c语言知识实现下面程序:
  9     1,实现strlen函数的功能
 10     2,实现strcpy函数的功能
 11     3,实现strcat函数的功能
 12     4,实现strcmp函数的功能
 13     不允许使用已有的str函数
 14 */
 15 int mystrlen(char ch[]) {
 16     int i, len = 0;
 17     for (i = 0; ch[i]!='\0'; i++) {
 18         len++;
 19     }
 20     return len;
 21 }
 22 
 23 char * mystrcpy(char des[], char src[]) {
 24     int len_des = mystrlen(des);
 25     int len_src = mystrlen(src);
 26     int i;
 27     if (len_des < len_src) {
 28         //des[]的长度不够
 29         return -1;
 30     }
 31     for (i = 0; des[i] != '\0'; i++) {
 32         //des[]最终会被修改掉,所以提前全部写为结束符,保证后续无错。
 33         des[i] = '\0';
 34     }
 35     for (i = 0; src[i] != '\0'; i++) {
 36         des[i] = src[i];
 37     }
 38     des[i] = '\0';
 39     return des;
 40 }
 41 
 42 char * mystrcat(char des[], char src[]) {
 43     int len_des = mystrlen(des);
 44     int len_src = mystrlen(src);
 45     int flag = 0;
 46     int i;
 47     if (len_src <= 0 || len_des <= 0) {
 48         return -EFAULT;
 49     }
 50     for (i = 0; des[i] != '\0'; i++) {
 51         flag += 1;
 52     }
 53     for (i = 0; src[i] != '\0'; i++) {
 54         des[flag] = src[i];
 55         flag++;
 56     }
 57     return des;
 58 }
 59 
 60 int mystrcmp(char des[], char src[]) {
 61     int len_des = mystrlen(des);
 62     int len_src = mystrlen(src);
 63     int i;
 64     if (len_src < 0 || len_des < 0) {
 65         return -EFAULT;
 66     }
 67     if (len_des > len_src) {
 68         return 1;
 69     }
 70     else if (len_des == len_src) {
 71         for (i = 0; i < len_des && i < len_src; i++) {
 72             if (des[i] < src[i]) {
 73                 return -1;
 74             }
 75             else if (des[i] > src[i]) {
 76                 return 1;
 77             }
 78         }
 79         return 0;
 80     }
 81     else if (len_des < len_src) {
 82         return -1;
 83     }
 84 }
 85 
 86 int main()
 87 {
 88     char str1[20] = "hello_world";
 89     char str2[] = "apple";
 90     char str3[] = "pie";
 91     int len;
 92     int sign;
 93 
 94     len = mystrlen(str1);
 95     printf("str1 len is %d\n", len);
 96     len = mystrlen(str2);
 97     printf("str2 len is %d\n", len);
 98 
 99     mystrcpy(str1, str2); //到这里str1已经是apple了。
100     printf("mystrcpy str1 is:%s\n", str1);
101 
102     mystrcat(str1, str3); //到这里str1应该是applepie。
103     printf("mystrcat str1 is:%s\n", str1);
104 
105     sign = mystrcmp(str1, str3);
106     printf("mystrcmp is:%d\n", sign);
107 
108     return 0;
109 }
11

 

 
posted @ 2024-02-03 17:39  这个菠萝好咸  阅读(15)  评论(0编辑  收藏  举报