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

c语言小练习——字符串长度、拷贝、拼接、比较的更多相关文章

  1. Swift3.0语言教程获取字符串长度

    Swift3.0语言教程获取字符串长度 Swift3.0语言教程获取字符串长度,当在一个字符串中存在很多的字符时,如果想要计算字符串的长度时相当麻烦的一件事情,在NSString中可以使用length ...

  2. C 语言实例 - 计算字符串长度

    C 语言实例 - 计算字符串长度 C 语言实例 C 语言实例 计算字符串长度. 实例 - 使用 strlen() #include <stdio.h> #include <strin ...

  3. go语言:获取字符串长度

    go语言字符串底层由字节数组实现,使用UTF-8编码,初始化以后不能被修改 获取字符串长度 一.当字符串中所有字符都是单字节字符时,使用 len 函数获取字符串的长度 package main imp ...

  4. C语言字符串长度(转)

    C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...

  5. 基于visual Studio2013解决C语言竞赛题之0704字符串长度

     题目

  6. C#指定长度截取字符串 并进行拼接。

    需求:有一个字符串需要按照指定长度拆分出来,然后在增加一个字符串拼接上. /// <summary> /// 字符串截取并拼接 /// </summary> /// <p ...

  7. C语言中求字符串的长度

    在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示 ...

  8. YTU 2417: C语言习题 字符串长度

    2417: C语言习题 字符串长度 时间限制: 1 Sec  内存限制: 128 MB 提交: 758  解决: 548 题目描述 写一函数,求一个字符串的长度.在main函数中输入字符串,并输出其长 ...

  9. 字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)

    1.strcpy字符串拷贝拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外) char *strcpy(char *pStrDest, const ch ...

  10. 宽字符与Unicode (c语言 汉语字符串长度)

    在C语言中,我们使用char来定义字符,占用一个字节,最多只能表示128个字符,也就是ASCII码中的字符.计算机起源于美国,char 可以表示所有的英文字符,在以英语为母语的国家完全没有问题. 但是 ...

随机推荐

  1. 仿MFC的消息印射(全局函数的实现)

    //弄了个仿MFC消息映射,这是全局函数都好弄,照着MFC就弄出来了,//在vs2017上可以通过#include <windows.h> #include "resource. ...

  2. 修改python打包后的窗体图标、任务栏图标、exe图标

    前言 我python开发的GUI界面(图形用户界面)一直是tkinter,打包exe一直是Pyinstaller.但是打包出来的exe图标.状态栏图标.窗体左上角图标一直是默认的羽毛,我想自定义. 效 ...

  3. RuleLinKClient - 再也不担心表达引擎宕机了

    原来有这么多时间 六月的那么一天,天气比以往时候都更凉爽,媳妇边收拾桌子,边漫不经心的对我说:你最近好像都没怎么阅读了. 正刷着新闻我,如同被一记响亮的晴空霹雳击中一般,不知所措.是了,最近几月诸事凑 ...

  4. Vue配置代理(devServer)解决跨域问题

    1.作用: Vue官方文档的解释是: 如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器.这个问题可以通过 vue.config.j ...

  5. 【论文解读】Faster sorting algorithm

    一.简要介绍     基本的算法,如排序或哈希,在任何一天都被使用数万亿次.随着对计算需求的增长,这些算法的性能变得至关重要.尽管在过去的2年中已经取得了显著的进展,但进一步改进这些现有的算法路线的有 ...

  6. 工具 – Vite

    前言 一直想 try Vite, 但一直没有机会. 今天突然 Live Server IP Address 手机连不上...也不知道是 Bug 还是怎么回事儿. 总之 IIS IP Address 没 ...

  7. Angular 18+ 高级教程 – Component 组件 の Template Binding Syntax

    前言 这篇介绍一些基本的 Angular 模板语法. 参考 Docs – Understanding binding Render.Event Listening and DOM Manipulati ...

  8. EF Core – 继承 Inheritance

    前言 继承是面向对象里的概念. 关系数据库只有一对一, 一对多这类关系, 并没有 "继承" 关系的概念. 所以 ORM (Object–relational mapping) 就需 ...

  9. Identity – 冷知识

    RoleManager, RoleStore, EF Core 关系 RoleManager 可以理解为一个上层 service, 是让我们操作 Role 的. 比如 create, update, ...

  10. Spring —— 注解开发(bean管理)

    注解定义bean       纯注解开发(无需配置文件)       bean作用范围    bean生命周期