1. 有一个字符串开头或结尾含有n个空格(“    abcdefgdddd   ”),欲去掉前后的空格,返回一个新的字符串。
a) 要求1:请自己定义一个接口(函数),并实现功能;
b) 要求2:编写测试用例。
c) 函数: int trimSpace(char * inbuf, char * outbuf);

  1. . 有一个字符串开头或结尾含有n个空格(“ abcdefgdddd ”),欲去掉前后的空格,返回一个新的字符串。
  2. a) 要求1:请自己定义一个接口(函数),并实现功能;
  3. b) 要求2:编写测试用例。
  4. c) 函数: int trimSpace(char * inbuf, char * outbuf);
  5.  
  6. //API函数
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include <stdio.h>
  10.  
  11. #pragma warning(disable:4996)
  12.  
  13. /*
  14. 子业务函数api
  15. */
  16.  
  17. int trimSpace(char* string_input_trim, char* string_output_trim)
  18. {
  19. //判断 业务函数 形参是否为 Null
  20. int returnTrim = ;
  21.  
  22. if (string_input_trim == NULL || string_output_trim == NULL)
  23. {
  24. returnTrim = -;
  25.  
  26. printf("trimSpace error: %d in (string_input_trim == NULL || string_output_trim == NULL)\n", returnTrim);
  27.  
  28. return returnTrim;
  29. }
  30.  
  31. //在被调用函数中,定义辅助指针 * 变量,把形参接过来,不要轻易改变被调用函数中的形参值
  32. char* s_i_t = string_input_trim;
  33. char* s_o_t = string_output_trim;
  34.  
  35. char* space_cut = ' ';
  36. int i = ;
  37. int j = ;
  38.  
  39. //裁剪函数,核心算法
  40. //while (s_i_t = strstr(s_i_t, space_cut))
  41. //{
  42.  
  43. //}
  44. for (i = ; i < strlen(s_i_t); i++)
  45. {
  46. if (*(s_i_t + i) != ' ')
  47. {
  48. *(s_o_t + j) = *(s_i_t +i);
  49. j++;
  50. }
  51. else
  52. {
  53. continue;
  54. }
  55.  
  56. }
  57.  
  58. //这个功能是可以实现的
  59. //for(i = 0; i < strlen(s_i_t); i++)
  60. //{
  61. // printf("%c\n", *(s_i_t + i));
  62. //}
  63.  
  64. *(s_o_t + j) = '\0';
  65.  
  66. printf("%s\n", s_i_t);
  67. printf("%s\n", s_o_t);
  68.  
  69. //返回值
  70. return returnTrim;
  71. }
  72.  
  73. int main_hw01()
  74. {
  75.  
  76. int returnMain = ;
  77.  
  78. char* string_input_main = " abcdefgdddd ";
  79. char* string_output_main = (char*)malloc();
  80.  
  81. //这个功能是可以实现的
  82. /*for (int i = 0; i < strlen(string_input_main); i++)
  83. {
  84. printf("%c", *(string_input_main + i));
  85. }*/
  86.  
  87. //returnMain = clientAPI(string_input_main, string_output_main);
  88. returnMain = trimSpace(string_input_main, string_output_main);
  89.  
  90. if (returnMain != )
  91. {
  92. printf("clientAPI error: %d\n", returnMain);
  93. }
  94. else
  95. {
  96. printf("string after trimming: %s\n", string_output_main);
  97. }
  98.  
  99. system("pause");
  100. return returnMain;
  101. }

2. 有一个字符串 “1a2b3d4z”:
要求写一个函数实现如下功能
a) 把偶数位字符挑出来,组成一个字符串1。
b) 把奇数位字符挑出来,组成一个字符串2。
c) 把字符串1和字符串2,通过函数参数,传给main,并打印。
d) 函数:getStr1Str2(char *source, char* buf1, char *buf2);

  1. //API函数
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5.  
  6. #pragma warning(disable:4996)
  7.  
  8. /*
  9. API 函数区
  10. */
  11. //int clientAPI(char * main, char * buf)
  12. int getStr1Str2(char* get_string, char* odd_string, char* even_string)
  13. {
  14. /*
  15. 形参判断区,定义返回变量
  16. */
  17. int getReturnValue = ;
  18.  
  19. if (get_string == NULL || odd_string == NULL || even_string == NULL)
  20. {
  21. getReturnValue = -;
  22.  
  23. printf("trimSpace error: %d in (string_input_trim == NULL || \
  24. string_output_trim == NULL)\n", getReturnValue);
  25.  
  26. return getReturnValue;
  27. }
  28.  
  29. /*
  30. 辅助指针区
  31. 在被调用函数中,定义辅助指针 * 变量,
  32. 把形参接过来,不要轻易改变被调用函数中的形参值
  33. */
  34. char* gs = get_string;
  35. char* os = odd_string;
  36. char* es = even_string;
  37.  
  38. /*
  39. 算法区
  40. */
  41. int i;
  42. int e_j = ;
  43. int o_j = ;
  44.  
  45. //for (i = 0; i < strlen(gs); i = i + 2)
  46. //{
  47. // *(es + e_j) = *(gs + i);
  48. // e_j++;
  49. //}
  50. for (i = ; i < strlen(gs); i++)
  51. {
  52. if (i % == )
  53. {
  54. *(es + e_j) = *(gs + i);
  55. e_j++;
  56. }
  57. else
  58. {
  59. *(os + o_j) = *(gs + i);
  60. o_j++;
  61. }
  62. }
  63.  
  64. *(es + e_j) = '\0';
  65. *(os + o_j) = '\0';
  66.  
  67. /*
  68. 返回区
  69. */
  70.  
  71. return getReturnValue;
  72. }
  73.  
  74. /*
  75. 主函数区
  76. */
  77. int main2019072301()
  78. {
  79. /*
  80. 参数区
  81. */
  82. int returnMain = ;
  83.  
  84. char* string_main = "1a2b3d4z";
  85. //int string_length = sizeof(string_main);
  86.  
  87. //char* string_odd[(const int)string_length];
  88. //char* string_even[(const int)string_length];
  89. char* string_odd = malloc();
  90. char* string_even = malloc();
  91.  
  92. /*
  93. 函数调用区
  94. */
  95. returnMain = getStr1Str2(string_main, string_odd, string_even);
  96.  
  97. /*
  98. 返回区
  99. */
  100. if (returnMain != )
  101. {
  102. printf("clientAPI error: %d\n", returnMain);
  103. }
  104. else
  105. {
  106. printf("even string: %s\n", string_even);
  107. printf("odd string: %s\n", string_odd);
  108. }
  109.  
  110. system("pause");
  111. return returnMain;
  112. }

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)}

  1. //API函数
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5.  
  6. #pragma warning(disable:4996)
  7.  
  8. /*
  9. API 函数区,专注算法
  10. */
  11. //int clientAPI(char * main, char * buf)
  12. int getKeyValue(char* getString, char* getKey,char* getValue, int* valueLength)
  13. {
  14. /*
  15. 形参判断区,定义返回变量
  16. */
  17. int returnGetKeyValue = ;
  18. if (getString == NULL || getKey == NULL || \
  19. getValue == NULL || valueLength == NULL)
  20. {
  21. printf("error in (getString == NULL || getKey == NULL || \
  22. getValue == NULL || valueLength == NULL) = %d", returnGetKeyValue);
  23. returnGetKeyValue = -;
  24. }
  25.  
  26. /*
  27. 辅助指针区
  28. 在被调用函数中,定义辅助指针 * 变量,
  29. 把形参接过来,不要轻易改变被调用函数中的形参值
  30. */
  31. char* gs = getString;
  32. char* gk = getKey;
  33. char* gv = getValue;
  34. int* vl = valueLength; //strlen(gs)
  35.  
  36. /*
  37. 算法区
  38. */
  39. int i = ;
  40. int j = ;
  41. while (*gs != '\0')
  42. {
  43. printf("*gs = %c\n", *gs);
  44. if (*gs == '=')
  45. {
  46. gs = gs + ;
  47. break;
  48. }
  49. else if (*gs == ' ')
  50. {
  51. gs = gs + ;
  52. continue;
  53. }
  54. else
  55. {
  56. *(gk + i) = *gs;
  57. //gk++;
  58. i++;
  59. gs++;
  60. }
  61. }
  62.  
  63. while (*gs != '\0')
  64. {
  65. printf("*gs = %c\n", *gs);
  66. if (*gs == ' ')
  67. {
  68. gs = gs + ;
  69. continue;
  70. }
  71. else
  72. {
  73. *(gv + j) = *gs;
  74. //gv++;
  75. j++;
  76. gs++;
  77. }
  78. }
  79.  
  80. *(gk + i) = '\0';
  81. *(gv + j) = '\0';
  82.  
  83. /*
  84. 返回区
  85. */
  86. printf("key = %s\n", gk);
  87. printf("value = %s\n", gv);
  88.  
  89. /*
  90. key = key5
  91. value = value12345
  92. */
  93.  
  94. return returnGetKeyValue;
  95. }
  96.  
  97. /*
  98. API 函数区,专注输出,多参函数的调用,TBC
  99. */
  100.  
  101. int globalPrint(int sInfo, ...)
  102. {
  103. int returnGlobalPrintValue = ;
  104.  
  105. return returnGlobalPrintValue;
  106. }
  107.  
  108. /*
  109. 主函数区
  110. */
  111. int main()
  112. {
  113. /*
  114. 参数区
  115. */
  116. int returnMain = ;
  117.  
  118. char* string_main = "key5 = value12345 ";
  119. char* string_key = malloc();
  120. char* string_value = malloc();
  121. int value_length = ;
  122. value_length = strlen(string_main);
  123.  
  124. /*
  125. 函数调用区
  126. */
  127. returnMain = getKeyValue(string_main, string_key, string_value, &value_length);
  128.  
  129. /*
  130. 返回区
  131. */
  132. if(returnMain != )
  133. {
  134. printf("clientAPI error: %d\n", returnMain);
  135. }
  136. else
  137. {
  138.  
  139. }
  140.  
  141. system("pause");
  142. return returnMain;
  143. }
  144.  
  145. int mainxxxx()
  146. {
  147. char* gs = "key5 = value12345 ";
  148. char* gt = "key";
  149. printf("strlen = %d\n", strlen(gs));
  150. printf("sizeof = %d\n", sizeof(gs));
  151.  
  152. printf("%s\n", *(gt + strlen(gt)));
  153. printf("%c\n", *(gt + strlen(gt)));
  154. /*
  155.  
  156. */
  157.  
  158. for (int i = ; i < strlen(gt); i++)
  159. {
  160. printf("%c\n", *(gt + i));
  161. }
  162. /*
  163. trlen = 27
  164. sizeof = 4
  165. (null)
  166. k
  167. e
  168. y
  169. */
  170. for (int i = ; i < strlen(gt) + ; i++)
  171. {
  172. printf("%c\n", *(gt + i));
  173. }
  174. /*
  175. k
  176. e
  177. y
  178.  
  179. */
  180.  
  181. /*for (int i = 0; i < strlen(gt) + 1; i++)
  182. {
  183. printf("%s\n", *(gt + i));
  184. }*/
  185. /*
  186. 引发了异常: 读取访问权限冲突。
  187. **it** 是 0x6B。
  188.  
  189. */
  190.  
  191. /*printf("%s\n", *(gt + 1));*/
  192.  
  193. //char* ptr = "abc";
  194. //printf(ptr);
  195. //printf("\n%c\n",*(ptr + 1));
  196. //printf("\n%s\n",*(ptr + 1)); //引发了异常: 读取访问权限冲突。**it** 是 0x62。
  197. char* gg = (char*)malloc();
  198. //while (*gt != NULL)
  199. //{
  200. // *gg = *gt;
  201. // gg++;
  202. // gt++;
  203. //}
  204.  
  205. for (int i = ; i < strlen(gt) + ; i++)
  206. {
  207. *(gg + i) = *(gt + i);
  208. }
  209. //*gg++ = '\0';
  210. printf("%s\n", gg);
  211.  
  212. system("pause");
  213. return ;
  214. }
  215.  
  216. int mainxxxc()
  217. {
  218. char* string = "key = 3";
  219. for (int i = ; i < strlen(string); i++)
  220. {
  221. printf("%c\n", *(string + i));
  222. }
  223. /*
  224. k
  225. e
  226. y
  227.  
  228. =
  229.  
  230. 3
  231. */
  232.  
  233. for (int i = ; i < strlen(string) + ; i++)
  234. {
  235. printf("%c\n", *(string + i));
  236. }
  237. /*
  238. k
  239. e
  240. y
  241.  
  242. =
  243.  
  244. 3
  245.  
  246. */
  247. char* k = (char*)malloc();
  248. char* v = (char*)malloc();
  249. for (int i = ; i < strlen(string) + ; i++)
  250. {
  251. if (*(string + i) == '=')
  252. {
  253. printf("found '='\n");
  254. }
  255. else
  256. {
  257. printf("not found '='\n");
  258. }
  259. }
  260.  
  261. /*
  262. not found '='
  263. not found '='
  264. not found '='
  265. not found '='
  266. found '='
  267. not found '='
  268. not found '='
  269. not found '=' --> '\0'
  270. */
  271.  
  272. //char* string = "key = 3";
  273. int j = ;
  274. int i = ;
  275. //for (i = 0; i < strlen(string); i++)
  276. //{
  277. // *(k + i) = *(string + i);
  278. // if (*(string + i) == '=')
  279. // {
  280. // //for (; i < strlen(string); i++)
  281. // //{
  282. // // *(v + j) = *(string + i + 1);
  283. // //}
  284. // for (j = 0; j < strlen(string); j++)
  285. // {
  286. // *(v + j) = *(string + i + 1);
  287. // i++;
  288. // }
  289. // }
  290.  
  291. //}
  292.  
  293. //for key
  294. for (i = ; i < strlen(string); i++)
  295. {
  296. *(k + i) = *(string + i);
  297. printf("%c\n", *(k + i));
  298. //key is key
  299. /*
  300. k
  301. e
  302. y
  303.  
  304. =
  305. */
  306.  
  307. if (*(string + i) == '=')
  308. {
  309. printf("x %c\n", *(string + i));
  310. printf("y %c\n", *(string + i +));
  311. string = string + i + ;
  312. printf("%c\n", *string);
  313. /*
  314. x =
  315. y
  316.  
  317. */
  318. break;
  319. }
  320. }
  321.  
  322. for (j = ; j < strlen(string); j++)
  323. {
  324. printf("z %c\n", *string);
  325. *(v + j) = *(string + j);
  326. }
  327.  
  328. /*
  329. key is ke
  330. value is
  331. */
  332.  
  333. *(k + i) = '\0';
  334. *(v + j) = '\0';
  335.  
  336. printf("key is %s\n", k);
  337. printf("value is %s\n", v);
  338.  
  339. system("pause");
  340.  
  341. return ;
  342. }

20190723_C的三个小实现的更多相关文章

  1. 一个div,包含三个小的div,平均分布的样式

    从11月份开始,自学前端开发,写静态页面中,经常用到一个大的div下包含三个小的div,平均分布div大小样式,写过多次,也多次忘记,每次都要现找资料,不想之后,在这么麻烦,索性今天自己记录一下,方便 ...

  2. 《Mysql 公司职员学习篇》 第三章 小A的疑问

    第三章 小A的疑问  ---- 数据类型和自增列 小A拿着鸡腿,回到了房间里面,咬了一嘴油,说:"我有2个疑问,在Excell里面,像列PetAge(宠物年龄)这样的数字,我一般会设置成数值 ...

  3. arduino新入手体验:三个小实验

    新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...

  4. 【LibreOJ】#6392. 「THUPC2018」密码学第三次小作业 / Rsa 扩展欧几里得算法

    [题目]#6392. 「THUPC2018」密码学第三次小作业 / Rsa [题意]T次询问,给定正整数c1,c2,e1,e2,N,求正整数m满足: \(c_1=m^{e_1} \ \ mod \ \ ...

  5. 关于微信小程序下拉出现三个小点

    包子这天看美团外卖的小程序,再瞅瞅自己的背景色,发现,美团下拉的时候有三个小点,但是我自己的校车徐下拉的时候没有三个小点,很是郁闷,于是各种的找各种的找,发现,这三个小点是微信小程序自带的,你只需要设 ...

  6. mysql 使用的三个小技巧

    mysql 使用的三个小技巧 快速阅读 Mysql查询工具中如何查询多条语名,Mysql中如何设置变量,Mysql中如何查特定字段,后面再加* Mysql查询工具中如何查询多条语名 默认myslq只能 ...

  7. 大div中,三个小div水平居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. HTML横向滚动条和文本超出显示三个小圆点

    我们这次要说的就是:现在有很多的公司以及很多的app软件经常使用的两个方法横向滚动条和文本超出三个小圆点 横向滚动条:顾名思义嘛,就是能够一块内容可以横着滑动. 文本超出三个小圆点:文本超出就是当文本 ...

  9. 三个小项目入门Go语言|字节青训营笔记

    前言 这是青训营的第一课,今天的课程比较快速的讲解了go语言的入门,并配合三个小的项目实践梳理所学知识点,这里详细回顾一下这三个项目,结合课后作业要求做一些代码补充,并附上自己的分析,青训期间的所有课 ...

随机推荐

  1. 生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败

    docker打包镜像遇到一个因为nuget权限验证问题导致镜像打包失败的问题,公司Nuget包用的是tfs管理的,tfs有权限验证,结果导致nuget还原失败,原有的NuGet.config文件如下: ...

  2. Patorjk

    http://www.patorjk.com/software/taag/#p=display&f=Henry%203D&t=CFR%20SpringBoot%20

  3. .net core session的使用步骤

    步骤 操作 备注 1   Microsoft.AspNetCore.Session Microsoft.AspNetCore.Http.Extensions nuget安装包 2 ConfigureS ...

  4. pinpoint1.8.5安装及使用指南

    简介 pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控.它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的. 各大APM ...

  5. CentOS 8 网卡设置

    本次测试环境是在虚拟机上测试 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# cd /etc/sysco ...

  6. 04-04 AdaBoost算法代码(鸢尾花分类)

    目录 AdaBoost算法代码(鸢尾花分类) 一.导入模块 二.导入数据 三.构造决策边界 四.训练模型 4.1 训练模型(n_e=10, l_r=0.8) 4.2 可视化 4.3 训练模型(n_es ...

  7. 用 Sphinx 搭建博客时,如何自定义插件?

    之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建. 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清 ...

  8. 配置VC++2010的glut库

    VC++2010是一个成熟稳定的版本,微软的编译工具Visual Studio系列从VC6到如今的VC2019,功能非常强大,我们在开始学习C++和计算机图形学的时候,一般入手<<C++P ...

  9. Python的字符串编码

    本文用实验详细地演示了Python2和Python3在字符串编码上的区别. 在Python2中,字符串字面量对应于8位的字符或面向字节编码的字节字面量.这些字符串的一个重要限制是它们无法完全地支持国际 ...

  10. 告诉你如何回答"线上CPU100%排查"面试问题

    不知道在大家面试中,有没有遇到这个问题: 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答!高调版对不起,我是做研发的,这个问题在生产 ...