20190723_C的三个小实现
1. 有一个字符串开头或结尾含有n个空格(“ abcdefgdddd ”),欲去掉前后的空格,返回一个新的字符串。
a) 要求1:请自己定义一个接口(函数),并实现功能;
b) 要求2:编写测试用例。
c) 函数: int trimSpace(char * inbuf, char * outbuf);
- . 有一个字符串开头或结尾含有n个空格(“ abcdefgdddd ”),欲去掉前后的空格,返回一个新的字符串。
- a) 要求1:请自己定义一个接口(函数),并实现功能;
- b) 要求2:编写测试用例。
- c) 函数: int trimSpace(char * inbuf, char * outbuf);
- //API函数
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #pragma warning(disable:4996)
- /*
- 子业务函数api
- */
- int trimSpace(char* string_input_trim, char* string_output_trim)
- {
- //判断 业务函数 形参是否为 Null
- int returnTrim = ;
- if (string_input_trim == NULL || string_output_trim == NULL)
- {
- returnTrim = -;
- printf("trimSpace error: %d in (string_input_trim == NULL || string_output_trim == NULL)\n", returnTrim);
- return returnTrim;
- }
- //在被调用函数中,定义辅助指针 * 变量,把形参接过来,不要轻易改变被调用函数中的形参值
- char* s_i_t = string_input_trim;
- char* s_o_t = string_output_trim;
- char* space_cut = ' ';
- int i = ;
- int j = ;
- //裁剪函数,核心算法
- //while (s_i_t = strstr(s_i_t, space_cut))
- //{
- //}
- for (i = ; i < strlen(s_i_t); i++)
- {
- if (*(s_i_t + i) != ' ')
- {
- *(s_o_t + j) = *(s_i_t +i);
- j++;
- }
- else
- {
- continue;
- }
- }
- //这个功能是可以实现的
- //for(i = 0; i < strlen(s_i_t); i++)
- //{
- // printf("%c\n", *(s_i_t + i));
- //}
- *(s_o_t + j) = '\0';
- printf("%s\n", s_i_t);
- printf("%s\n", s_o_t);
- //返回值
- return returnTrim;
- }
- int main_hw01()
- {
- int returnMain = ;
- char* string_input_main = " abcdefgdddd ";
- char* string_output_main = (char*)malloc();
- //这个功能是可以实现的
- /*for (int i = 0; i < strlen(string_input_main); i++)
- {
- printf("%c", *(string_input_main + i));
- }*/
- //returnMain = clientAPI(string_input_main, string_output_main);
- returnMain = trimSpace(string_input_main, string_output_main);
- if (returnMain != )
- {
- printf("clientAPI error: %d\n", returnMain);
- }
- else
- {
- printf("string after trimming: %s\n", string_output_main);
- }
- system("pause");
- return returnMain;
- }
2. 有一个字符串 “1a2b3d4z”:
要求写一个函数实现如下功能
a) 把偶数位字符挑出来,组成一个字符串1。
b) 把奇数位字符挑出来,组成一个字符串2。
c) 把字符串1和字符串2,通过函数参数,传给main,并打印。
d) 函数:getStr1Str2(char *source, char* buf1, char *buf2);
- //API函数
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #pragma warning(disable:4996)
- /*
- API 函数区
- */
- //int clientAPI(char * main, char * buf)
- int getStr1Str2(char* get_string, char* odd_string, char* even_string)
- {
- /*
- 形参判断区,定义返回变量
- */
- int getReturnValue = ;
- if (get_string == NULL || odd_string == NULL || even_string == NULL)
- {
- getReturnValue = -;
- printf("trimSpace error: %d in (string_input_trim == NULL || \
- string_output_trim == NULL)\n", getReturnValue);
- return getReturnValue;
- }
- /*
- 辅助指针区
- 在被调用函数中,定义辅助指针 * 变量,
- 把形参接过来,不要轻易改变被调用函数中的形参值
- */
- char* gs = get_string;
- char* os = odd_string;
- char* es = even_string;
- /*
- 算法区
- */
- int i;
- int e_j = ;
- int o_j = ;
- //for (i = 0; i < strlen(gs); i = i + 2)
- //{
- // *(es + e_j) = *(gs + i);
- // e_j++;
- //}
- for (i = ; i < strlen(gs); i++)
- {
- if (i % == )
- {
- *(es + e_j) = *(gs + i);
- e_j++;
- }
- else
- {
- *(os + o_j) = *(gs + i);
- o_j++;
- }
- }
- *(es + e_j) = '\0';
- *(os + o_j) = '\0';
- /*
- 返回区
- */
- return getReturnValue;
- }
- /*
- 主函数区
- */
- int main2019072301()
- {
- /*
- 参数区
- */
- int returnMain = ;
- char* string_main = "1a2b3d4z";
- //int string_length = sizeof(string_main);
- //char* string_odd[(const int)string_length];
- //char* string_even[(const int)string_length];
- char* string_odd = malloc();
- char* string_even = malloc();
- /*
- 函数调用区
- */
- returnMain = getStr1Str2(string_main, string_odd, string_even);
- /*
- 返回区
- */
- if (returnMain != )
- {
- printf("clientAPI error: %d\n", returnMain);
- }
- else
- {
- printf("even string: %s\n", string_even);
- printf("odd string: %s\n", string_odd);
- }
- system("pause");
- return returnMain;
- }
3. 键值对 (“key = value”) 字符串,在开发中经常使用;
a) 要求1:请自己定义一个接口,实现根据key获取valude。
b) 要求2:编写测试用例
c) 要求3:键值对中间可能有n多空格,请去除空格。
d) 注意:键值对字符串格式可能如下
i. “key1 = valude1”
ii. “key2 = valude2”
iii. “key3 = valude3”
iv. “key4 valude4”
v. “key5 = “
vi. “key6 = ”
vii. “key7 = “
e) 函数:int getKeyByValude(char* keyvaluebuf, char* keybuf, char* valuebuf, int* valuebuflen);
f) 例子:“ORACLE_name = itcast” “ORACLE_name” itcast “oracle_pwd=123456” “oracle_pwd” 123456 “oracle_pwd= 123456” “oracle_pwd” 123456
g) 函数例子 int main(){ getKeyByValude(“key1= valude1 “, “key1”, buf, &len)}
- //API函数
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #pragma warning(disable:4996)
- /*
- API 函数区,专注算法
- */
- //int clientAPI(char * main, char * buf)
- int getKeyValue(char* getString, char* getKey,char* getValue, int* valueLength)
- {
- /*
- 形参判断区,定义返回变量
- */
- int returnGetKeyValue = ;
- if (getString == NULL || getKey == NULL || \
- getValue == NULL || valueLength == NULL)
- {
- printf("error in (getString == NULL || getKey == NULL || \
- getValue == NULL || valueLength == NULL) = %d", returnGetKeyValue);
- returnGetKeyValue = -;
- }
- /*
- 辅助指针区
- 在被调用函数中,定义辅助指针 * 变量,
- 把形参接过来,不要轻易改变被调用函数中的形参值
- */
- char* gs = getString;
- char* gk = getKey;
- char* gv = getValue;
- int* vl = valueLength; //strlen(gs)
- /*
- 算法区
- */
- int i = ;
- int j = ;
- while (*gs != '\0')
- {
- printf("*gs = %c\n", *gs);
- if (*gs == '=')
- {
- gs = gs + ;
- break;
- }
- else if (*gs == ' ')
- {
- gs = gs + ;
- continue;
- }
- else
- {
- *(gk + i) = *gs;
- //gk++;
- i++;
- gs++;
- }
- }
- while (*gs != '\0')
- {
- printf("*gs = %c\n", *gs);
- if (*gs == ' ')
- {
- gs = gs + ;
- continue;
- }
- else
- {
- *(gv + j) = *gs;
- //gv++;
- j++;
- gs++;
- }
- }
- *(gk + i) = '\0';
- *(gv + j) = '\0';
- /*
- 返回区
- */
- printf("key = %s\n", gk);
- printf("value = %s\n", gv);
- /*
- key = key5
- value = value12345
- */
- return returnGetKeyValue;
- }
- /*
- API 函数区,专注输出,多参函数的调用,TBC
- */
- int globalPrint(int sInfo, ...)
- {
- int returnGlobalPrintValue = ;
- return returnGlobalPrintValue;
- }
- /*
- 主函数区
- */
- int main()
- {
- /*
- 参数区
- */
- int returnMain = ;
- char* string_main = "key5 = value12345 ";
- char* string_key = malloc();
- char* string_value = malloc();
- int value_length = ;
- value_length = strlen(string_main);
- /*
- 函数调用区
- */
- returnMain = getKeyValue(string_main, string_key, string_value, &value_length);
- /*
- 返回区
- */
- if(returnMain != )
- {
- printf("clientAPI error: %d\n", returnMain);
- }
- else
- {
- }
- system("pause");
- return returnMain;
- }
- int mainxxxx()
- {
- char* gs = "key5 = value12345 ";
- char* gt = "key";
- printf("strlen = %d\n", strlen(gs));
- printf("sizeof = %d\n", sizeof(gs));
- printf("%s\n", *(gt + strlen(gt)));
- printf("%c\n", *(gt + strlen(gt)));
- /*
- */
- for (int i = ; i < strlen(gt); i++)
- {
- printf("%c\n", *(gt + i));
- }
- /*
- trlen = 27
- sizeof = 4
- (null)
- k
- e
- y
- */
- for (int i = ; i < strlen(gt) + ; i++)
- {
- printf("%c\n", *(gt + i));
- }
- /*
- k
- e
- y
- */
- /*for (int i = 0; i < strlen(gt) + 1; i++)
- {
- printf("%s\n", *(gt + i));
- }*/
- /*
- 引发了异常: 读取访问权限冲突。
- **it** 是 0x6B。
- */
- /*printf("%s\n", *(gt + 1));*/
- //char* ptr = "abc";
- //printf(ptr);
- //printf("\n%c\n",*(ptr + 1));
- //printf("\n%s\n",*(ptr + 1)); //引发了异常: 读取访问权限冲突。**it** 是 0x62。
- char* gg = (char*)malloc();
- //while (*gt != NULL)
- //{
- // *gg = *gt;
- // gg++;
- // gt++;
- //}
- for (int i = ; i < strlen(gt) + ; i++)
- {
- *(gg + i) = *(gt + i);
- }
- //*gg++ = '\0';
- printf("%s\n", gg);
- system("pause");
- return ;
- }
- int mainxxxc()
- {
- char* string = "key = 3";
- for (int i = ; i < strlen(string); i++)
- {
- printf("%c\n", *(string + i));
- }
- /*
- k
- e
- y
- =
- 3
- */
- for (int i = ; i < strlen(string) + ; i++)
- {
- printf("%c\n", *(string + i));
- }
- /*
- k
- e
- y
- =
- 3
- */
- char* k = (char*)malloc();
- char* v = (char*)malloc();
- for (int i = ; i < strlen(string) + ; i++)
- {
- if (*(string + i) == '=')
- {
- printf("found '='\n");
- }
- else
- {
- printf("not found '='\n");
- }
- }
- /*
- not found '='
- not found '='
- not found '='
- not found '='
- found '='
- not found '='
- not found '='
- not found '=' --> '\0'
- */
- //char* string = "key = 3";
- int j = ;
- int i = ;
- //for (i = 0; i < strlen(string); i++)
- //{
- // *(k + i) = *(string + i);
- // if (*(string + i) == '=')
- // {
- // //for (; i < strlen(string); i++)
- // //{
- // // *(v + j) = *(string + i + 1);
- // //}
- // for (j = 0; j < strlen(string); j++)
- // {
- // *(v + j) = *(string + i + 1);
- // i++;
- // }
- // }
- //}
- //for key
- for (i = ; i < strlen(string); i++)
- {
- *(k + i) = *(string + i);
- printf("%c\n", *(k + i));
- //key is key
- /*
- k
- e
- y
- =
- */
- if (*(string + i) == '=')
- {
- printf("x %c\n", *(string + i));
- printf("y %c\n", *(string + i +));
- string = string + i + ;
- printf("%c\n", *string);
- /*
- x =
- y
- */
- break;
- }
- }
- for (j = ; j < strlen(string); j++)
- {
- printf("z %c\n", *string);
- *(v + j) = *(string + j);
- }
- /*
- key is ke
- value is
- */
- *(k + i) = '\0';
- *(v + j) = '\0';
- printf("key is %s\n", k);
- printf("value is %s\n", v);
- system("pause");
- return ;
- }
20190723_C的三个小实现的更多相关文章
- 一个div,包含三个小的div,平均分布的样式
从11月份开始,自学前端开发,写静态页面中,经常用到一个大的div下包含三个小的div,平均分布div大小样式,写过多次,也多次忘记,每次都要现找资料,不想之后,在这么麻烦,索性今天自己记录一下,方便 ...
- 《Mysql 公司职员学习篇》 第三章 小A的疑问
第三章 小A的疑问 ---- 数据类型和自增列 小A拿着鸡腿,回到了房间里面,咬了一嘴油,说:"我有2个疑问,在Excell里面,像列PetAge(宠物年龄)这样的数字,我一般会设置成数值 ...
- arduino新入手体验:三个小实验
新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...
- 【LibreOJ】#6392. 「THUPC2018」密码学第三次小作业 / Rsa 扩展欧几里得算法
[题目]#6392. 「THUPC2018」密码学第三次小作业 / Rsa [题意]T次询问,给定正整数c1,c2,e1,e2,N,求正整数m满足: \(c_1=m^{e_1} \ \ mod \ \ ...
- 关于微信小程序下拉出现三个小点
包子这天看美团外卖的小程序,再瞅瞅自己的背景色,发现,美团下拉的时候有三个小点,但是我自己的校车徐下拉的时候没有三个小点,很是郁闷,于是各种的找各种的找,发现,这三个小点是微信小程序自带的,你只需要设 ...
- mysql 使用的三个小技巧
mysql 使用的三个小技巧 快速阅读 Mysql查询工具中如何查询多条语名,Mysql中如何设置变量,Mysql中如何查特定字段,后面再加* Mysql查询工具中如何查询多条语名 默认myslq只能 ...
- 大div中,三个小div水平居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML横向滚动条和文本超出显示三个小圆点
我们这次要说的就是:现在有很多的公司以及很多的app软件经常使用的两个方法横向滚动条和文本超出三个小圆点 横向滚动条:顾名思义嘛,就是能够一块内容可以横着滑动. 文本超出三个小圆点:文本超出就是当文本 ...
- 三个小项目入门Go语言|字节青训营笔记
前言 这是青训营的第一课,今天的课程比较快速的讲解了go语言的入门,并配合三个小的项目实践梳理所学知识点,这里详细回顾一下这三个项目,结合课后作业要求做一些代码补充,并附上自己的分析,青训期间的所有课 ...
随机推荐
- 生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败
docker打包镜像遇到一个因为nuget权限验证问题导致镜像打包失败的问题,公司Nuget包用的是tfs管理的,tfs有权限验证,结果导致nuget还原失败,原有的NuGet.config文件如下: ...
- Patorjk
http://www.patorjk.com/software/taag/#p=display&f=Henry%203D&t=CFR%20SpringBoot%20
- .net core session的使用步骤
步骤 操作 备注 1 Microsoft.AspNetCore.Session Microsoft.AspNetCore.Http.Extensions nuget安装包 2 ConfigureS ...
- pinpoint1.8.5安装及使用指南
简介 pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控.它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的. 各大APM ...
- CentOS 8 网卡设置
本次测试环境是在虚拟机上测试 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# cd /etc/sysco ...
- 04-04 AdaBoost算法代码(鸢尾花分类)
目录 AdaBoost算法代码(鸢尾花分类) 一.导入模块 二.导入数据 三.构造决策边界 四.训练模型 4.1 训练模型(n_e=10, l_r=0.8) 4.2 可视化 4.3 训练模型(n_es ...
- 用 Sphinx 搭建博客时,如何自定义插件?
之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建. 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清 ...
- 配置VC++2010的glut库
VC++2010是一个成熟稳定的版本,微软的编译工具Visual Studio系列从VC6到如今的VC2019,功能非常强大,我们在开始学习C++和计算机图形学的时候,一般入手<<C++P ...
- Python的字符串编码
本文用实验详细地演示了Python2和Python3在字符串编码上的区别. 在Python2中,字符串字面量对应于8位的字符或面向字节编码的字节字面量.这些字符串的一个重要限制是它们无法完全地支持国际 ...
- 告诉你如何回答"线上CPU100%排查"面试问题
不知道在大家面试中,有没有遇到这个问题: 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答!高调版对不起,我是做研发的,这个问题在生产 ...