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 ...
随机推荐
- SD详解-销售过程
http://www.sapzh.com/html/Financial/SD/3113.html 7 销售过程 7.1销售执行 目的 作用与目的描述 步骤 操作过程/步骤描述 备 ...
- 自然底数e的意义是什么?
自然底数e的意义是什么? https://mp.weixin.qq.com/s?__biz=MzA5ODUxOTA5Mg==&mid=2652553811&idx=1&sn=0 ...
- vue实现表计监测界面
已经好几个月没有更新博客了,因为最近太忙,忙得连写博客的时间都没有.上班赶项目开启996模式,下班要去练车考驾照,一边还在赶书稿,一边还接了私活.不由得感叹:年纪大了,再也经不起那么折腾..... 每 ...
- Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据
所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...
- MAC终端常用语法
这篇文章的重点不在于说是对终端语法的讲解,而是方便大家做语法备忘. 方便查找对应终端语法.所以使用了表格形式对常用终端语法进行了汇总, 但是并没有很多的讲解部分. 当然了这里记录的也都是十分基础的语法 ...
- iOS ----------将照片保存到相册
在使用前 请导入photos.framework 然后导入 #import <Photos/PHPhotoLibrary.h> #import <Photos/PHAssetCha ...
- 如何在linux下使用sudo命令不用输入密码
用过linux的小伙伴可能都知道,每次使用sudo的时候需要输入密码,这样很耽误事,那么接下来我会教大家如何去设置 一.1.输入su root进入root模式 2.输入visudo会打开/etc/su ...
- idea连接服务器上传jar并运行
.打开idea tools-deployment-configuration.. .打开如图 点击 + 号 .如 ...
- UE3中的时间
为了管理时间,Unreal将游戏运行时间片分隔为"Ticks".一个Tick是关卡中所有Actors更新的最小时间单位.一个tick一般是10ms-100ms(CPU性能越好,游戏 ...
- SQLServer之事务简介
事务定义 事务是单个的工作单元.事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序自动执行. 事务分类 自动提交事务 每条单独的语句都是一个事务. 在自动提 ...