C语言 百炼成钢19
/*
题目55: 有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果
1) 以逗号分割字符串,形成二维数组,并把结果传出;
2) 把二维数组行数运算结果也传出。
strchr(“aa,aa”,’,’ );
请自己定义一个接口(函数)。
要求1:能正确表达功能的要求,定义出接口(函数)(30分);
要求2:正确实现接口(函数),并实现功能(40分);
要求3:编写正确的测试用例。(30分)。
*/
//解析字符串
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //删除空格
int removespace(const char *pin, char *pout); //解析字符串
int analysistr(const char *pin, char bufstr[][], char *requirc); //打印字符数组
int printfarr09(char parr[][]); void main(){
//原始字符串(非','结尾)
const char *p = "abcdef,acccd,eeee,aaaa,e3eeeee,sskss,werertw";
//原始字符串(','结尾)
const char *p2 = "abcdef,acccd,eeee,aaaa,e3eeeee,sskss,";
//新字符串数组
char bufstr[][] = {};
//新字符串数组
char bufstr2[][] = { };
//定义以何种字符作为截取字符
char ch = ',';
analysistr(p, bufstr, &ch);
analysistr(p2, bufstr2, &ch);
//打印新字符数组
printfarr09(bufstr);
system("pause");
} //打印二维数组
int printfarr09(char parr[][]){
int ERRO_MSG = ;
if (parr == NULL)
{
ERRO_MSG = ;
printf("parr==NULL erro msg:%d", ERRO_MSG);
return ERRO_MSG;
}
//打印二维数组
for (int i = ; i < ; i++)
{
printf("%s\n", parr[i]);
}
return ERRO_MSG;
} //删除空格
int removespace(const char *pin, char *pout){
int ERRO_MSG = ;
if (pin == NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
if (pout == NULL)
{
ERRO_MSG = ;
printf("pout==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
while (*pin != '\0'){
if (*pin != ' ')
{
*pout++ = *pin;
}
pin++;
}
return ERRO_MSG;
} //解析字符串
int analysistr(const char *pin, char bufstr[][], char *requirc){
int ERRO_MSG = ;
if (pin == NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
if (bufstr == NULL)
{
ERRO_MSG = ;
printf("bufstr==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
if (requirc == NULL)
{
ERRO_MSG = ;
printf("requirc==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
//分解字符串
//strchr函数原型:extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。
const char *p = pin;
const char *ptmp = pin;
//新字符串个数计数
int ncount = ;
int res = ;
//临时存储一段字符串
char strt[] = { };
//用来删除strt中的空格
char strt2[] = { };
while (p != '\0'){
/*memset是计算机中C / C++语言函数。
将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值,
第一个值为指定的内存地址,块的大小由第三个参数指定,
这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。*/
//清除字符串缓存,每次循环都会产生字符串缓存
memset(strt, , sizeof(strt));
memset(strt2, , sizeof(strt2));
p = strchr(p, *requirc);
if (p == NULL)
{
//处理','不作为最后一个符的情况
//没有找到字符,那么将剩下的所有字符当作一个新字符串
strcpy(strt, ptmp);
//删除字符串中的空格
res = removespace(strt, strt2);
if (res)
{
ERRO_MSG = ;
printf("删除空格fuc报错 erro msg:%d", ERRO_MSG);
return ERRO_MSG;
}
//处理','作为最后一个符的情况
if (strlen(strt2)>)
{
//将新字符串拷贝到数组里
strcpy(bufstr[ncount], strt2);
}
break;
}
else{
//此时ptmp在开头,p指针在字符','第一次出现的地方
strncpy(strt, ptmp, p - ptmp);
//删除字符串中的空格
res = removespace(strt, strt2);
if (res)
{
ERRO_MSG = ;
printf("删除空格fuc报错 erro msg:%d", ERRO_MSG);
return ERRO_MSG;
}
if (strlen(strt2)>)
{
//将新字符串拷贝到数组里
strcpy(bufstr[ncount], strt2);
ncount++;
}
//重新初始化指针
ptmp = p = p + ;
}
}
return ERRO_MSG;
}

C语言 百炼成钢19的更多相关文章
- C语言 百炼成钢7
//题目19:一个数如果恰好等于它的因子之和,这个数就称为“完数”.例如6=1+2+3.编程找出1000以内的所有完数. #define _CRT_SECURE_NO_WARNINGS #includ ...
- C程序设计语言练习题1-9
练习1-9 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替. 代码如下: #include <stdio.h> // 包含标准库的信息. int main() // ...
- C语言 百炼成钢23
/* 题目59:链表如下 typedef struct _LinkList { int data; struct _LinkList*next; } LinkList; 有如下结点数据域 1 2 3 ...
- C 语言 习题 1-9
练习1-9 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替. #include <stdio.h> int main(int argc, char const *ar ...
- Java入门 - 语言基础 - 19.方法
原文地址:http://www.work100.net/training/java-method.html 更多教程:光束云 - 免费课程 方法 序号 文内章节 视频 1 概述 2 方法的定义 3 方 ...
- C语言 百炼成钢3
//题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...
- C语言 百炼成钢2
//题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...
- C语言 百炼成钢1
//题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...
- C语言 百炼成钢18
//题目52:用递归打印以下图形 //* //*.*. //*..*..*.. //*...*...*...*... //*....*....*....*....*.... #include<s ...
随机推荐
- Docker: 解决Docker无法在电信网络中访问外网
在电信网络中,Docker在build和run时会无法访问外网,原因是docker的默认dns地址是8.8.8.8,由于众所周知的原因,我们需要改写这个地址,方法如下: 修改/etc/sysconfi ...
- iOS开发 UIWebView+JavaScript 交互总结
算是个人项目经验的,印象比较深的Web+JS交互的使用 iOS原生应用与Web页面元素交互方式有很多,JavaScriptCore.拦截协议.第三方框架WebViewJavaScriptBridge. ...
- iOS 删除NSString中特定字符
+(NSString *) stringDeleteString:(NSString *)str { NSMutableString *str1 = [NSMutableString stringWi ...
- 阿里云上安装vsftp笔记
安装 ftp 1 ssh登录服务器 首先检查有没有安装运行 ps -ef |grep vsftpd 2 yum安装vsftpd yum安装 yum in ...
- CMD命令名详细大全
在运行菜单里键入CMD,就可以调出CMD命令窗口,有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联. AT 计划在计算机上运行的命令和程序.ATTRIB 显示或更 ...
- Html 的实体字符大全
HTML特殊符号对照表.常用的字符实体 最常用的字符实体 显示结果 描述 实体名称 实体编号 空格 < 小于号 < < > 大于号 > > & ...
- 详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案
主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxe ...
- 记一次Web应用CPU偏高
LZ开发的一个公司内部应用供查询HIVE数据使用.部署上线后总是会出现CPU偏高的情况,而且本地测试很难重现.之前出现几次都是通过直接重启后继续使用,因为是内部使用,重启一下也没有很大影响(当然,每次 ...
- Hadoop Browse the filesystem 无效处理
当我们安装好并正常运行hdfs后输入http://xxxxxxxxx:50070会进入下图所示的页面. 其中Browse the filesystem 是查看文件系统的入口. 但是在发现这个链接一直无 ...
- zsh
一.简介 Zsh 也许是目前最好用的 shell,是 bash 替代品中较为优秀的一个. 二.优点 1)补全 zsh 的命令补全功能非常强大,可以补齐路径,补齐命令,补齐参数等. 按下 tab 键 ...