/*
使用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. Ubuntu 安装 libwebkitgtk-1.0-0

    在 Ubuntu 上安装完 PDI 后启动 spoon.sh 时提示安装 libwebkitgtk-1.0-0.由于 apt 官方源中不包含此软件包,因此要添加该软件包的源,以及源对应的 gpg 公钥 ...

  2. C语言实现一个走迷宫小游戏(深度优先算法)

    补充一下,先前文章末尾给出的下载链接的完整代码含有部分C++的语法(使用Dev-C++并且文件扩展名为.cpp的没有影响),如果有的朋友使用的语言标准是VC6的话可能不支持,所以在修改过后再上传一版, ...

  3. EF Core报错“Format of the initialization string does not conform to specification starting at index 0.”

    问题分析: 今天在EF Core数据库迁移的过程中无意中发现此错误,我的项目仅仅复制黏贴了配置文件而已,自此发现是数据库配置文件json在作祟. 对比了下发现是.json文件没有被设置"复制 ...

  4. docker启动问题: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

    系统环境:centos 7 docker版本:Docker version 26.1.4, build 5650f9b 问题:Job for docker.service failed because ...

  5. ASP.NET Core – Partial View

    前言 之前写过一篇 ASP.NET Core – View Component 里面有提到, View Component 是 Partial View 的加强版. 多了一个 .cs 可以写逻辑. 那 ...

  6. 强!推荐一款Python开源自动化脚本工具:AutoKey!

    1.前言 在数字化时代,自动化工具成为了提升工作效率和生产力的重要手段.Python作为一种广泛使用的编程语言,以其强大的功能和易用性受到许多开发者的青睐. 而今天给大家推荐一款开源的自动化脚本工具: ...

  7. MonoDevelop 的续集dotdevelop

    DotDevelop 是一个跨平台的 .NET 集成开发环境(IDE),它原本是 MonoDevelop 的分支项目,这个项目更侧重于 Linux 支持和 GTK3 升级,github:https:/ ...

  8. C++ STL(标准模版库)—— vector 与 迭代器

    STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称. STL 从广义上讲分为三类:algorithm(算法).containe ...

  9. QT数据可视化框架编程实战之三维曲面图QML组件 使用高度图生成三维曲面图 补天云QT技术培训专家

    QT数据可视化框架编程实战之三维曲面图 使用高度图生成三维曲面图 补天云QT技术培训专家 简介 本文将介绍如何使用QT数据可视化框架中的QT三维曲面图QML组件,通过一幅高度图的图片来生成三维曲面图. ...

  10. Nuxt.js 应用中的 app:rendered 钩子详解

    title: Nuxt.js 应用中的 app:rendered 钩子详解 date: 2024/10/2 updated: 2024/10/2 author: cmdragon excerpt: 摘 ...