/*
使用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. 1000T的文件怎么能快速从南京传到北京?最佳方案你肯定想不到

    今天刷面试题看到一个有意思的面试题, 1000T的文件怎么能以最快速度从南京传到北京? 网络传输 首先我们考虑通过网络传输,需要多长时间. 我特地咨询了在运营商工作的同学,目前带宽: 家庭宽带下行最大 ...

  2. liunx下安装Nginx

    Linux下nginx的安装以及环境配置 https://blog.csdn.net/qq_42815754/article/details/82980326 第一步:下载nginx压缩包 在这里可以 ...

  3. centos7.5离线安装zabbix4.0

    一.配置环境 1.1 Linux环境说明 zabbix 安装要求 https://www.zabbix.com/documentation/4.0/zh/manual/installation/req ...

  4. VUE-局部使用

    目录 VUE-局部使用 快速入门 常用指令 v-for v-bind v-if & v-show v-on v-model vue生命周期 Axios Vue案例 VUE-局部使用 Vue 是 ...

  5. vscode新建html文件并快速生成标准的html代码

    1.打开vscode,点击Open Folder 2.选择目标文件夹,新建一个扩展名为.html的文件: 3.在第一行输入 !(英文状态下),按tab键,新建成功.界面如下图所示:

  6. 补: Rest 风格请求处理的的内容补充(1)

    补: Rest 风格请求处理的的内容补充(1) Rest风格请求:注意事项和细节 客户端是PostMan 可以直接发送Put,delete等方式请求,可不设置Filter 如果哟啊SpringBoot ...

  7. numpy argsort排序如何让其稳定排序

    numpy.argsort(a, axis=-1, kind=None, order=None) Parameters: aarray_like Array to sort. axis int or ...

  8. C++11新初始化方法 使用{}初始化变量

    列表初始化 在C++11及以后的版本中,使用{}来初始化变量是一种新的初始化方法,称为列表初始化(List Initialization).这种初始化方法可以用来初始化内置类型.自定义类型以及聚合类型 ...

  9. 暑假集训CSP提高模拟 ∫[0,6] (x^2)/6 dx

    \[\text{暑假集训CSP提高模拟}\int^{6}_{0}\frac{x^{2}}{6}dx \] 关于这个东西怎么求的良心教程 含义:求出 \(f(x)=\frac{x^{2}}{6}\) 在 ...

  10. .NET 工具库高效生成 PDF 文档

    前言 QuestPDF 是一个开源 .NET 库,用于生成 PDF 文档.使用了C# Fluent API方式可简化开发.减少错误并提高工作效率.利用它可以轻松生成 PDF 报告.发票.导出文件等. ...