免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tyguaike
打印 上一主题 下一主题

[算法] c语言怎么实现分隔 [复制链接]

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
91 [报告]
发表于 2014-08-21 13:57 |只看该作者
本帖最后由 yulihua49 于 2014-08-21 14:18 编辑
fender0107401 发表于 2014-08-21 13:07
回复 86# yulihua49

牛逼闪闪的科普哥,你好,你觉得C语言有什么不适合的?

也不是绝对的。
如,智能语言(如prolog之类),动态语言,就是在运行中产生的代码。一过性的应用等。
比方一些软件,会存储一些执行代码,满足某种条件就可能调用一下,这时就应该使用脚本语言。
也不太适合用作web插件。

像楼主这样的小儿科功能,你说C不擅长,你不觉得太搞了吗?
另外,你不认为,编译,或者解释,本身就是字符串处理吗?而且是复杂的处理?
你那个语言的代码,不就是字符串吗?

处理时,多用几行,少用几行,有那么重要吗?以致成为‘不适合’或‘不擅长’?

你如果说:我学习了python,发现它处理文本特有优势,比C方便多了,我一点都不会反对你。

最多也就是楼主,他是否采纳你的建议。

有一个哥们,钟爱SQL,连大素数运算这类题目,都用SQL做。你说SQL不适合做什么,他跟你急。。。。。。。。。。

咱们借楼主这块宝地,随便聊聊而已,牛逼不牛逼的,你放放行不行?

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
92 [报告]
发表于 2014-08-21 14:25 |只看该作者
yulihua49 发表于 2014-08-21 13:57
也不是绝对的。
如,智能语言(如prolog之类),动态语言,就是在运行中产生的代码。一过性的应用等。
...


科普哥威武,话都让你说了。

你确实挺牛逼的,就一个字符串处理,你能扯出这么多东西来,我和小伙伴们都十分的佩服。

连大素数什么的都扯出来了,你真厉害。

每次看你的帖子,都觉得你非常的“高大上”。

论坛徽章:
0
93 [报告]
发表于 2014-08-21 14:39 |只看该作者
严重同意,全是空谈,有本事show me the code!回复 43# __BlueGuy_


   

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
94 [报告]
发表于 2014-08-21 15:08 |只看该作者
本帖最后由 yulihua49 于 2014-08-21 16:26 编辑
virgil123 发表于 2014-08-21 14:39
严重同意,全是空谈,有本事show me the code!回复 43# __BlueGuy_

for(char *p=strtok(buf,","),int i=0;p;strtok(NULL,","),i++)  data [ i ]=atoi(p);

C++Boost库简介
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用
泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了
不少工具类,可以完成比较具体的工作。
boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象
和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数
据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。有一些库是跨类别包含的,
就是既属于这个类别又属于那个类别。
在文本处理部分,conversion/lexcial_cast类用于“用C++”的方法实现数字类型和字符串之间的
转换。主要是替代C标准库中的atoi、itoa之类的函数。当然其中一个最大的好处就是支持泛
型了。
format库提供了对流的“printf-like”功能。printf里使用%d、%s等等的参数做替换的方法在很多
情况下还是非常方便的,STL的iostream则缺乏这样的功能。format为stream增加了这个功能,并
且功能比原始的printf更强。
regex,这个不多说了,正则表达式库。如果需要做字符串分析的人就会理解正则表达式有多
么有用了。
spirit,这个是做LL分析的框架,可以根据EBNF规则对文件进行分析。(不要告诉我不知道什
么是EBNF)。做编译器的可能会用到。一般人不太用的到。
tokenizer库。我以前经常在CSDN上看到有人问怎么把一个字符串按逗号分割成字符串数组。
也许有些人很羡慕VB的split函数。现在,boost的tokenizer也有相同的功能了。
如果我没记错的
话,这个tokenizer还支持正则表达式,是不是很爽?
array: 提供了常量大小的数组的一个包装,喜欢用数组但是苦恼数组定位、确定数组大小等
功能的人这下开心了。
dynamic_bitset,动态分配大小的bitset,我们知道STL里有个bitset,为位运算提供了不少方便。
可惜它的大小需要在编译期指定。现在好了,运行期动态分配大小的bitset来了。
graph。提供了图的容器和相关算法。我还没有在程序中用到过图,需要用的人可以看看。
multi_array提供了对多维数组的封装,应该还是比较有用的。
并发编程里只有一个库,thread,提供了一个可移植的线程库,不过在Windows平台上我感觉
用处不大。因为它是基于Posix线程的,在Windows里对Posix的支持不是很好。
接下来的数学和数值类里,包含了很多数值处理方面的类库,数学类我也不太熟,不过这
里有几个类还是很有用的,比如rational分数类,random随机数类,等等。
static_assert,提供了编译器的assert功能。
test库,一个单元测试框架,非常不错。
concept_check提供了泛型编程时,对泛型量的一点检查,不是很完善,不过比没有好。
数据类型类any,一个安全的可以包含不同对象的类。把它作为容器的元素类型,那么这个容
器就可以包含不同类型的元素。比用void *要安全。
compressed_pair,跟STL里的pair差不多。不过对空元素做了优化。
tuple,呵呵,也许是某些人梦寐以求的东西。可以让函数返回多个值。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
95 [报告]
发表于 2014-08-21 16:27 |只看该作者
yulihua49 发表于 2014-08-21 11:49
当然,100%工作都是机器语言完成的。但是,它不适合你,也不适合绝大多数的程序员。
同样,C语言适合绝大 ...

C语言适合绝大多数场合,那必定适合于你,也必定适合于LZ的情况吧。
请针对LZ的情况,写一个函数。要求输入文件名,解析里面的以逗号分割,不定行数、列数的数字,返回一个数组。
大话少说,上代码吧。

论坛徽章:
0
96 [报告]
发表于 2014-08-21 18:56 |只看该作者
回复 85# yulihua49
嘿嘿,吃猪肉才香。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
97 [报告]
发表于 2014-08-22 12:04 |只看该作者
本帖最后由 yulihua49 于 2014-08-22 13:02 编辑
noword2k 发表于 2014-08-21 16:27
C语言适合绝大多数场合,那必定适合于你,也必定适合于LZ的情况吧。
请针对LZ的情况,写一个函数。要求输 ...


vector行吗?就是不定长数组啊,会C++的都知道。

std::vector<int> c;
std::vector<c> b;

while(fgets(buf,sizeof(buf),stdin)) {
     std::vector<int> a;
          for(char *p=strtok(buf,","),int i=0;p;strtok(NULL,","),i++)  a.push_back(atoi(p));
          b.push_back(a);
}
// 返回b。

多几行,不是什么解决不了的吧?
咱们走题了,字符串处理,就是一行,把泛型处理扯进来了。

处理时,多用几行,少用几行,有那么重要吗?以致成为‘不适合’或‘不擅长’?

如果楼主随后有个庞大的矩阵处理呢?你得看整个项目的整体需求,来确定用什么平台。

python,适合简单的文本处理,我没否认过。所有的脚本语言都适合这个。
但是不能否认,处理文本,复杂的文本处理,C是强项。



论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
98 [报告]
发表于 2014-08-22 12:22 |只看该作者
本帖最后由 noword2k 于 2014-08-22 12:23 编辑
yulihua49 发表于 2014-08-22 12:04
处理时,多用几行,少用几行,有那么重要吗?以致成为‘不适合’或‘不擅长’?

vector行吗?就是不定 ...

把C比作万能良药,到头来还是要求助于C++。

行数不重要吗?
你编写,或是阅读理解10行代码要用多少时间?
100行代码又有多少时间?

用斧子砍树要用10分钟,消耗100大卡热量;用链锯砍树用1分钟,消耗10大卡。
我可不可以说链锯比斧子更适合于砍树?

用python完成一项任务用1分钟,用C++完成同样的任务用10分钟。
我可不可以说python比C++更适用于这项任务?

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
99 [报告]
发表于 2014-08-22 12:35 |只看该作者
本帖最后由 yulihua49 于 2014-08-22 12:54 编辑
noword2k 发表于 2014-08-22 12:22
把C比作万能良药,到头来还是要求助于C++。

行数不重要吗?

如果一个大项目,python一天干完,C需要一个月,那的确需要考虑了。
但是你还要综合考虑项目的整体需求。
事实上,我们并不排除脚本语言。
我们在每一个项目里都混合了各种工具,既有C/C++,也有C#,甚至sh,lua,python,JAVA,他们优势互补,共同构筑了我们的应用。
我们清楚它们各自的强项和弱项,合理的加以综合。
但是为了一个小儿科的功能,能说明什么呢?为了那一行的语句,就要去和pathon打一次交道(假定项目主体语言是C)?跟它交互一次又需要多少语句?
这个例子,字符串处理+泛型,我用了7个语句,比你多,怎么了?为这点就换平台?那才叫“取短补长”。

就C适合不适合文本处理这个问题,就我们的情况来说,经常对文本进行复杂的处理,而且要求高性能,除了C/C++,其他语言还真的不合适。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
100 [报告]
发表于 2014-08-22 13:09 |只看该作者
本帖最后由 yulihua49 于 2014-08-22 13:26 编辑
noword2k 发表于 2014-08-22 12:22
把C比作万能良药,到头来还是要求助于C++。

行数不重要吗?

那个字符串处理,就一行,是C的。C++只不过用于泛型,跟“C不擅长字符串处理”这个伪命题没什么关系。
泛型,也有cstl,干这点活也不在话下。
再说C和C++,本是一家人,C是爹,C++是儿子,C老当益壮,C++生龙活虎,上阵父子兵,分什么你我。
行数?7行与4行有什么原则区别?
我前边给你的程序,100多行,字符串处理就只有5、6行,不是为了这几行就要玩python吧?
给这个例子说,在整个应用里,字符串处理仅仅是问题的一部分,拿这个说擅长不擅长,小题大做。

不瞒你说,那个项目(前面那个数据库泛型)之前,还真弄了一下python,测了一下数据库访问,那性能,叫一个惨不忍睹。
你就明白为什么一个应用,它的基本平台是C。没有一个应用架构师,敢把项目基本平台定于python。当然,作为小组件参与一点工作是可以的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP