首页 > 其他分享 >c语言小练习——字符串长度、拷贝、拼接、比较

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

时间:2024-02-03 17:44:06浏览次数:27  
标签:src int str1 des len char 拼接 字符串 拷贝

/*
使用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

 

 

标签:src,int,str1,des,len,char,拼接,字符串,拷贝
From: https://www.cnblogs.com/salty-pineapple/p/18004997

相关文章

  • C语言解题||字符串左旋
    题目:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋1个字符得到BCDAABCD左旋2个字符得到CDAB代码实现:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>//除第1个外,全部往前1位,然后原第1个填充至极右voidLeft_reverse(......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复
    20.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。题目链接:20.有效的括号-力扣(LeetCode)思路:只......
  • 字符串操作(1)
    题目P10058[https://www.luogu.com.cn/problem/P10058]这道题要求对字符串进行指定的操作:循环移动和翻转因为要输出操作后的字符串,所以我们不妨在原字符串的基础上进行操作考虑循环移动:因为只需要输出最后一次,所以不难想到我们可以记录最后输出的字符串的第一位在哪里,那么我......
  • 对称字符串-od-python
    题目描述对称就是最大的美学,现有一道关于对称字符串的美学。已知:第1个字符串:R第2个字符串:BR第3个字符串:RBBR第4个字符串:BRRBRBBR第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错!就是第个字符串=第i-1号字符串取反+第i-1号字符串取反(R->B,B->R)现在告诉你n......
  • C#之linq和lamda表达式GroupBy分组拼接字符串
    业务需求:点击提示信息,如:“售后单【SH001】序列号【001,002,006】;售后单【SH002】序列号【003,007,009】。已经过了质保期,确认要继续关闭吗” 核心代码://lamda表达式varerrorMsgObj=getNoPay.GroupBy(s=>s["FBILLNO"]+"").Select(d=>new{......
  • 字符串构建问题——cf_921_C. Did We Get Everything Covered?
    目录问题概述思路想法参考代码include<bits/stdc++.h>defineFAST_IOios::sync_with_stdio(false),cin.tie(0),cout.tie(0)defineendl'\n'definepllpair<longlong,longlong>definepiipair<int,int>definevivectordefinevlvectordefinelllo......
  • JAVA一维数组的赋值,拷贝,反转,扩容
    赋值(引用传递)拷贝反转扩容......
  • sqlserver特性,自动忽略字符串末尾的空格
    实测发现在sqlserver中查询语句,数据字段末尾存在空格用等于号也可以查询出来例如whereCarNumber=‘粤A23435’和whereCarNumber='粤A23435’查询出来的结果一样,sqlserver会忽视字符串末尾的空格 原因:空字符和空格都不占用存储空间,SQLServer默认其是相等的。结果都是......
  • [学习笔记] JavaScript中字符串的Slice()方法
    slice方法是对字符串进行切割/截取的一种方法。string.slice(index1,index2)其中:string为字符串名;index1为数字,意为字符串从第X个字符开始截取,如为1,则从字符串第1个字符开始截取。同时该数可为负数,当设为负数时则是从倒数第X个字符开始截取(但仍旧是向最后一个字符的方......
  • 【字符串】区间本质不同子串个数
    题目描述给定一个字符串\(S\),\(m\)次询问,每次询问\(S_{[l,r]}\)中有多少个本质不同的子串。\(1\leq|S|\leq10^5,1\leqm\leq2\times10^5\)。算法描述考虑HH的项链那道题,扫描右端点,维护对于某些串,能贡献的最大的左端点。假设有一个长为\(len\)的串,最后一次......