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
c语言小练习——字符串长度、拷贝、拼接、比较的更多相关文章
- Swift3.0语言教程获取字符串长度
Swift3.0语言教程获取字符串长度 Swift3.0语言教程获取字符串长度,当在一个字符串中存在很多的字符时,如果想要计算字符串的长度时相当麻烦的一件事情,在NSString中可以使用length ...
- C 语言实例 - 计算字符串长度
C 语言实例 - 计算字符串长度 C 语言实例 C 语言实例 计算字符串长度. 实例 - 使用 strlen() #include <stdio.h> #include <strin ...
- go语言:获取字符串长度
go语言字符串底层由字节数组实现,使用UTF-8编码,初始化以后不能被修改 获取字符串长度 一.当字符串中所有字符都是单字节字符时,使用 len 函数获取字符串的长度 package main imp ...
- C语言字符串长度(转)
C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...
- 基于visual Studio2013解决C语言竞赛题之0704字符串长度
题目
- C#指定长度截取字符串 并进行拼接。
需求:有一个字符串需要按照指定长度拆分出来,然后在增加一个字符串拼接上. /// <summary> /// 字符串截取并拼接 /// </summary> /// <p ...
- C语言中求字符串的长度
在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示 ...
- YTU 2417: C语言习题 字符串长度
2417: C语言习题 字符串长度 时间限制: 1 Sec 内存限制: 128 MB 提交: 758 解决: 548 题目描述 写一函数,求一个字符串的长度.在main函数中输入字符串,并输出其长 ...
- 字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)
1.strcpy字符串拷贝拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外) char *strcpy(char *pStrDest, const ch ...
- 宽字符与Unicode (c语言 汉语字符串长度)
在C语言中,我们使用char来定义字符,占用一个字节,最多只能表示128个字符,也就是ASCII码中的字符.计算机起源于美国,char 可以表示所有的英文字符,在以英语为母语的国家完全没有问题. 但是 ...
随机推荐
- windows启动jar包并显示标题
cmd启动java的jar并显示窗口标题 title xx服务 D: cd D:\xx服务 java -jar guns-vip-main.jar 文件名名为 run.bat 双击即可运行
- Ubuntu16.04使用命令行安装jdk1.8
在Ubuntu中安装jdk过于麻烦,有时设置不好可能就没有办法使用,卸载也难以卸载干净,所以这篇文章使用相对简单的命令行来安装jdk,只需简单的四个命令,省去许多麻烦,下面是方法. 进入Ubuntu打 ...
- SpringBoot静态文件映射问题
如果遇到这种情况,检查静态文件(js/css/img)是不是在默认的static路径下,在查看application配置中的 static-path-pattern: 是否和前端映射路径完全相同,要是 ...
- JWT(JSON WEB TOKEN)是玩具吗
JWT当然不是玩具,理解其设计意图,和适用场景自然会发现存在的就是有价值的 JWT: JSON Web Token 起源和定义 JWT(JSON Web Token)是由 IETF(Internet ...
- 【YashanDB知识库】kettle从DM8的number类型同步到YashanDB的varchar类型,存入是科学计数法形式的数据
[标题]kettle从DM8的number类型同步到YashanDB的varchar类型,存入是科学计数法形式的数据 [问题分类]数据导入导出 [关键字]数据同步,number类型,科学计数法 [问题 ...
- c程序设计语言 by K&R(二)指针与数组
指针与数组 1. c语言只有值传递,没有引用传递 可通过指针交换 #include <stdio.h> #include <stdlib.h> void swap(int* a ...
- BOM – Navigator SendBeacon
介绍 游览器专门做给 tracking 用的接口. 从前我们想 tracking 用户点击 anchor 是比较麻烦的. 因为 click 事件触发后, 想发 ajxax 去做 tracking re ...
- C# – 6.0, 7.0, 8.0, 9.0 总结
前言 C# 这几年改了好几个版本, 多了许多语法糖,还带有 JavaScript / TypeScript 的味道了. 我觉得随着 blazor 的发展 (想取代前端开发 ?) 那 C# 必然需要更多 ...
- Angular 学习笔记 (Angular 12 get started)
Angular 12 视乎比以往更稳定了. 这里记入一般的 get started 结构和做法. 第 1 步, 创建项目. ng new project --create-application=fa ...
- 手搓大模型Task03:手搓一个最小的 Agent 系统
前言 训练一个大模型是一件高投入低回报的事情,况且训练的事情是由大的巨头公司来做的事情:通常我们是在已有的大模型基础之上做微调或Agent等:大模型的能力是毋庸置疑的,但大模型在一些实时的问题上, ...