c语言提高(第二次作业)
1. 画出字符串一级指针内存四区模型
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[20]= "aaaa";
char buf2[] = "bbbb";
char *p1 = "111111";
char *p2 = malloc(100);
strcpy(p2, "3333");
return 0;
}
2. 有一个字符串开头或结尾含有n个空格 (” abcdefgdddd ”),欲去掉前后空格,返回一个新字符串。
要求1:请自己定义一个接口(函数),并实现功能;
要求2:编写测试用例。
功能:获取非空字符串
参数:inbuf:原始字符串buf首地址
outbuf:非空字符串buf首地址
返回值:
成功:
失败:非0
int trimSpace(char *inbuf, char *outbuf);{
if(inbuf==NULL||outbuf==NULL)
return -;
char *p = inbuf;
int begin=;//字符串的第一个元素
int end =strlen(inbuf)-;//字符串最后一个元素的位置
int n=; if(end<)//出错处理
return -;
//从左往右移动,如果当前字符为空,而且没有结束
while (p[begin] == ' ' && p[begin] != )
{
begin++; //位置从右移动一位
} //从右往左移动,如果当前字符为空
while (p[end] == ' ' && end > )
{
end--; //往左移动
} if (end == )
{
return -;
} n = end - begin + ; //非空元素个数 strncpy(outbuf, p + begin, n);
outbuf[n] = ; return ;
}
3. 有一个字符串“1a2b3d4z”;
要求写一个函数实现如下功能:
功能1:把偶数位字符挑选出来,组成一个字符串1。
功能2:把奇数位字符挑选出来,组成一个字符串2。
功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。
功能4:主函数能测试通过。
int getStr1Str2(char *source, char *buf1, char *buf2);
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
有一个字符串“1a2b3d4z”;
要求写一个函数实现如下功能:
功能1:把偶数位字符挑选出来,组成一个字符串1。
功能2:把奇数位字符挑选出来,组成一个字符串2。
功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。
功能4:主函数能测试通过。
*/
int getStr1Str2(char *source, char *buf1, char *buf2) {
if (source == NULL || buf1 == NULL || buf2 == NULL)
return -;
int n = strlen(source);//字符串长度
int i = ;
for (; i < n; i++) {
//如果是奇数位
if (i % != ) {
*buf1 = source[i];//*(source+i)
buf1++;
}
//如果是偶数位
else {
*buf2++ = source[i];
}
}
return ;
}
int main() {
char p[] = "1a2b3d4z";
char buf1[] = { };
char buf2[] = { };
int ret = ;
ret = getStr1Str2(p, buf1, buf2);
if (ret != ) {
printf("getStr1Str2 err:%d\n", ret);
return ret;
}
printf("buf1=%s\n", buf1);
printf("buf2=%s\n", buf2);
printf("\n");
system("pause");
return ;
}
4. 键值对(“key = value”)字符串,在开发中经常使用
要求1:请自己定义一个接口,实现根据key获取.
要求2:编写测试用例。
要求3:键值对中间可能有n多空格,请去除空格
注意:键值对字符串格式可能如下:
"key1 = value1"
"key2 = value2"
"key3 = value3"
"key4 = value4"
"key5 = "
"key6 ="
int getKeyByValue(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen);
int main(void)
{
//...
getKeyByValude("key1 = valude1", "key1", buf, &len);
//...
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string.h>
int trimSpace(char *inbuf, char *outbuf){
if (inbuf == NULL || outbuf == NULL)
return -;
char *p = inbuf;
int begin = ;//字符串的第一个元素
int end = strlen(inbuf) - ;//字符串最后一个元素的位置
int n = ; if (end<)//出错处理
return -;
//从左往右移动,如果当前字符为空,而且没有结束
while (p[begin] == ' ' && p[begin] != )
{
begin++; //位置从右移动一位
} //从右往左移动,如果当前字符为空
while (p[end] == ' ' && end > )
{
end--; //往左移动
} if (end == )
{
return -;
} n = end - begin + ; //非空元素个数 strncpy(outbuf, p + begin, n);
outbuf[n] = ; return ;
}
int getKeyByValue(char *keyvaluebuf, char *keybuf, char *valuebuf, int *valuebuflen) {
/*
keyvaluebuf="key4 =value4";
keybuf="key4"; */ if (keybuf == NULL || keyvaluebuf == NULL || valuebuf == NULL || valuebuflen == NULL)
{
return -;
}
char *p = NULL;
int ret = ;
//查找匹配键值
//"key4= value4"找key4,找到返回首地址
p = strstr(keyvaluebuf, keybuf);
if (p == NULL) {
return -;
}
//如果找到,重新设置起点位置,跳过“key4”
//p="= value4"
//"key4= value4"->"= value4"
p = p + strlen(keybuf);
//查找=
p = strstr(p, "=");
if (p == NULL) {
return -;
} //如果找到,重新设置起点位置,跳过“=”
//p=" value4"
//"= value4"->"= value4"
p = p + strlen("=");
//取非空字符
ret = trimSpace(p, valuebuf);
if (ret != )
{
printf("trimSpace err:%d\n", ret);
return ret;
}
//获取长度,通过*间接赋值
*valuebuflen = strlen(valuebuf); return ;
}
int main() {
char keyVal[] = "key4 =value4";
char key[] = "key4";
char value[] = { };
int len = ;
int ret = ; ret = getKeyByValue(keyVal, key, value, &len);
if (ret != ) {
printf("getKeyByValue err:%d\n", ret); return ret;
}
printf("val:%s\n", value);
printf("len:%d\n", len); #if 0
char p[] = "1a2b3d4z";
char buf1[] = { };
char buf2[] = { };
int ret = ; ret = getStr1Str2(p, buf1, buf2);
if (ret != ) {
printf("getStr1Str2 err:%d\n", ret); return ret;
}
printf("buf1=%s\n", buf1);
printf("buf2=%s\n", buf2);
#endif
printf("\n");
system("pause");
return ;
}
c语言提高(第二次作业)的更多相关文章
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
- C语言基础第二次作业
PTA第一次作业 题目7-1 统计学生成绩 1.实验代码 #include<stdio.h> int main(void){ ,B=,C=,D=,E=,f; scanf("%d ...
- c语言:第二次作业,循环结构
1.本章学习总结(2分) 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 循环相比分支和顺序结构难了许多,相对的来说我的c语言的基础比之前有提高,但是还是很多题想了很久也 ...
- C语言程序第二次作业
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...
- C 语言学习 第二次作业总结
本次作业内容,主要有以下几点: 新建 coding 帐号,且使用 coding 上传本次作业的代码 Printf及条件判断语句的使用 作业总结 作业总结: 同学们开始渐入佳境,能够较为流畅的写出合理的 ...
- C语言程序设计第二次作业
一.学习内容 掌握关系运算符.逻辑运算符.条件运算符 掌握常用数学函数的用法 if语句(单分支,双分支和多分支) 用switch语句实现多分支 理解多个if语句,if...else if... 和if ...
- C语言的第二次作业
一.PTA实验作业 题目1. 计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.本题代码 #include<stdio.h> #include<math.h> int ...
- C语言程序设计第二次作业——顺序结构
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1: 错误原因:i和d位置错误 改正方法:i和d位置互换 错误信息2: 错误原因:\n后缺了一个" 改正方法:\n后加一个 ...
- C语言程序设计第二次作业—————顺序结构改
1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido.h> int mian() { ...
- C语言程序设计第二次作业1
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...
随机推荐
- 反射:修改请求头HttpWebRequest/Webclient Header属性的date值-"此标头必须使用适当的属性进行修改"
场景:调用外部接口,接口要求Header信息里面包涵Date信息,且Date信息必须是格式化好的,(他们用的是Java),但是C#默认的是Date属性不能被修改, 所以就会出现下面的错误: 未处理的异 ...
- JavaScript(二)
本文转载自https://blog.csdn.net/xiaogeldx/article/details/85412716 JavaScript操作符 算术运算符 算术运算符有:+,-,*,/,%,+ ...
- Dynamics 365新功能:可编辑的网格(行内编辑)
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复238或者20161127可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- AndroisStudio列选择模式
今天敲代码的时候可能由于误开了“列选择模式”,在移动光标时,发现若光标所在列超过当前行的行尾列,不像一般情况应该跳到行尾,而变成了保持列的位置,停在了超过行尾的空白处, 如图:非一般情况 一般情况: ...
- .net 支付宝接口小小误区
1.该密匙目测不是私钥,应用官方文档生成的长私钥. 2. 此公钥用的是应用公钥 3.设置支付完成后的通知页面和回调页面 其他的按照官方文档的demo来实现即可
- fiddler几种功能强大的用法
参考网址: http://caibaojian.com/fiddler.html http://www.cnblogs.com/tangdongchu/p/4178552.html 1.fiddler ...
- ASP.NET Zero--前端应用程序
前端应用程序 ASP.NET Zero包含可以作为您的公共网站或应用程序着陆页的起点的前端页面.首次运行项目时,您会看到主页如下所示: 这里有两页:主页和关于.这些页面的内容只是占位符和演示目的.您可 ...
- 从0开始的Python学习009参数
默认参数 对于参数有时候我们希望他是可选的,前面介绍了函数柯里化,当然还有其他的解决方案.如果不想给某些参数提供值的话,就让这写参数使用默认值.在函数定义的时候给参数赋值使用(参数,参数=值..... ...
- C# 不用递归,获取无限层级数据
对象属性 public class ResList { public int ID { get; set; } public List<ResList> Child { get; set; ...
- Linux常见系统故障
Linux常见系统故障 1.修复MBR扇区故障 2.修复GRUB引导故障 3./etc/inittab文件丢失 4.遗忘root用户密码 5.修复文件系统 6.磁盘资源耗尽故障 一.修复MBR扇区故障 ...