※ 引述《hardware (哈味)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux GCC
: 问题(Question):
: #include <unistd.h>
: #include <stdio.h>
: #include <stdlib.h>
: #include <time.h>
: int main(int argc, char **argv)
: {
: char *line = "abc dddd efg hhhhhhhhhh";
: /* 从第五个位元开始抓6个位元
: 也就是抓出来的结果想要是
: "dddd e"
: 目前找C的字串处理函式找不太到
: 不知道怎么抓出来 感谢大大的指导
: */
: return 0;
: }
如果没有处理函式,那就自己写
我学长说,不能奢望每次都有标准函式库或是别人写好的可以用
char self_str[7];
int i;
for(i=0;i<6;i++)
self_str[i]=*(line+4+i);
self_str[i]='\0'; //这行一定要记得加,很多人会忘记
作者:
Caesar08 (Caesar)
2016-09-12 22:59:00原文的回文就有解答了... 你真的有看原文的回文吗?strncpy...就include就好了,strncpy也是standard c function
作者:
EdisonX (卡卡兽)
2016-09-12 23:31:001. 情非得已情况下永远不要自己造轮子。 2. 自己写的比较慢,没经过验证。 3. pow (double * , double *) 是 ???math.h 的确没有 pow(double * , double *) 啊 @@话说回来,如果今天工作看到有人自己写 strcpy,我想有厌恶
作者:
Caesar08 (Caesar)
2016-09-12 23:34:00是阿 不是好现象,那你就都全部自己刻吧
作者:
EdisonX (卡卡兽)
2016-09-12 23:34:00感的应该不只有我一人 @@ 原因就如上所述。
作者:
Caesar08 (Caesar)
2016-09-12 23:37:00你只需要一个strncpy,就只好自己写一个strncpy下次你只需要一个qsort,就只好自己做quick sort
作者:
EdisonX (卡卡兽)
2016-09-12 23:39:00@Caesar08,下次需要 cv::imread / cv::imwrite的时候..@@
作者:
Caesar08 (Caesar)
2016-09-12 23:41:00另外,standard library可以预先编译好,其实没有编译的档案数是多很多的 这种问题,如果是C++你才有可能要担心
作者:
Sirctal (母猪母猪 夜里哭哭)
2016-09-13 00:00:00学长上过班没?? 如果当自己练习当然是很好 但是出去后你如果自己硬干 你可能会被人家婊死抱歉没看好QQ
作者:
askacis (ASKA)
2016-09-13 00:07:00自己刻func的例子通常是写MCU或是bootcode
作者:
Caesar08 (Caesar)
2016-09-13 00:07:00要不就是你GCC太旧,不然就是你不会用pow
作者:
EdisonX (卡卡兽)
2016-09-13 00:10:00未看先猜 : gcc -o math math.c -lm 恭喜你白刻了。 XD
作者:
askacis (ASKA)
2016-09-13 00:13:00就连uclibc都有pow()了,你公司gcc是什么版本? 自己编的?
作者:
EdisonX (卡卡兽)
2016-09-13 00:14:00疑!你的工作用不到C,那怎还会有这问题呢??
作者:
askacis (ASKA)
2016-09-13 00:15:00另外错误讯息贴上来,才知道是compile time还是linkingtime报错,linking time 的话加个-lm 说不定就搞定了wwww
天啊 ... 拿 Turbo C 来比。大大你 printf 都从 int 21h 开始写吗
作者:
chuegou (chuegou)
2016-09-13 00:45:00我也是自己刻那一派
作者:
CoNsTaR ((const *))
2016-09-13 03:50:00朝圣…
作者:
noodleT (面T)
2016-09-13 06:53:00除非是要自己做算法练习,不然直接套用现成的是会比较好
作者:
descent (“雄辩是银,沉默是金”)
2016-09-13 09:43:00我觉得你的想法很好, 不过红黑树也自己写吗?完成一个程式并不一定都要从轮子打造。学习的话, 从轮子打造是很棒的学习方式, 纵使打造的是破轮子math.h N1750 在 7.12.7.4 有描述 pow(), gcc 没支援真的是很奇怪, 你的平台很特殊吗?
作者:
CoNsTaR ((const *))
2016-09-13 11:25:00undefined reference... 你编译有加 -lm 吗
作者:
Caesar08 (Caesar)
2016-09-13 11:57:00怪了,1/6.0的结果也是double才对
作者:
descent (“雄辩是银,沉默是金”)
2016-09-13 12:42:00可以 附上你的测试程式和编译指令吗?
手边没有gcc4.1.2,不过有3.4.6,编起来十分正常
作者:
PkmX (阿猫)
2016-09-13 13:00:00gcc 4.1.2 都快要一个世纪以前了...
作者:
askacis (ASKA)
2016-09-13 14:13:00undefined reference to 是linking time的问题代表你连compile time跟linking time都不甚清楚加个-lm 试试看,还有问题再上来说没有support除非是自己编的gcc,不然pow()在gcc都会有才对
自己造轮子是十分危险的 尤其在production code他这个例子不是太难的函数 复杂点的会有很多edge cases用library 的原因是因为它们已经被大量测试过 bug几乎没有自己刻学当然很好 但是不是自己用的就科科 有std map你偏要自己刻一个RB tree吗 不论速度 安全性 维护上都是问题
作者:
Caesar08 (Caesar)
2016-09-13 15:19:00速度通常会比较慢,因为compiler通常都有一些"特别"的function可以呼叫
作者:
CoNsTaR ((const *))
2016-09-13 15:42:00每个人自己刻的版本行为都一点点不一样 你的 strncpy 包含 '\0' 我的不包含 以后看到 strncpy 我都不知道到底是哪一种 连一个简单的 strncpy 都可以有一堆问题 更复杂的你要怎么办
作者: oscar60111 (还得努力学习) 2016-09-13 16:24:00
怎么这篇有种看到某king的感觉...
作者:
EdisonX (卡卡兽)
2016-09-13 16:26:00推楼上,曾接过wchar和char互换的,个人刻的就好几个,还有四舍五入的也二,三个,这个到时肯定查死。
作者:
CoNsTaR ((const *))
2016-09-13 20:48:00其实我在想 会不会是编译器支援过度了 直接把 pow 值算出来所以不会有 undefined reference但是如果遇到分数编译器就不会先算 就真的呼叫了 pow 然后又没有加 -lm 于是爆炸
作者: yvb 2016-09-13 21:59:00
gcc3.4 起支援 built-in pow() 运算, 但仅限整数的整数次方,及实数的正整数次方; 到 gcc4.3 支援更完整的内建常数 pow().上述的内建 pow() 都必须是常数参数, compile time 时就算好.
作者:
CoNsTaR ((const *))
2016-09-13 22:28:00推楼上博学多闻 XDD
作者: yvb 2016-09-13 22:39:00
不, 是 google 博学多闻, 最适合用来问冷知识了 XD
作者:
CoNsTaR ((const *))
2016-09-13 23:22:00其实推文就有大大说明了…
作者:
descent (“雄辩是银,沉默是金”)
2016-09-13 23:34:00man pow 就有说要 -lm
作者:
firejox (Tangent)
2016-09-13 23:57:00说不定人家没有man阿XD
作者:
askacis (ASKA)
2016-09-14 00:54:00长篇大论之前还是把基本中的基本学好吧
作者:
CoNsTaR ((const *))
2016-09-14 01:07:00谁说过的意义是不大 但是原Po连推文都不看问题就大了你要造轮子自己在旁边学习玩沙的时候随便你慢慢造
作者:
firejox (Tangent)
2016-09-14 01:09:00你不会为了开车而去组一台车子吧...
作者:
CoNsTaR ((const *))
2016-09-14 01:11:00但是回文说 include standard library 不是好现象是怎样?你的学长这么厉害 叫他多教教学弟啊 怎么会让学弟来 ptt问蠢问题人家给的建议一副爱理不理 不知道这串是在客气什么这么厉害你的 gcc 怎么会 undefined reference?回个文也要优越感这么重 你要优越感是没问题 先把基础打好再说可以?之前还看你Po文说教学长“双重指标”???学长学会了吗?原来还是助教 抱歉我个人对C语言助教有非常大的偏见我大一的C语言段考被看不懂我答案的助教打41分看不懂就划掉我怨念很深 助教还是重修100遍再来改考卷吧还有我不反对学习的时候造轮子 但是你说include standardlibrary是不好的现象是想怎样?整篇就只会拿一些皮毛的东西来说嘴 发现自己的错误就巧妙回避 你该不会觉得我说巧妙是在称赞你吧然后顺便帮楼上回答一下 你连基本是什么都还要问那你还是不要来讨论好了 另外学好就是你一直以为你自己已经做到的事 谢谢
作者:
firejox (Tangent)
2016-09-14 01:55:00Std lib 不好的地方 应该是如果程式有漏洞 很好开shellStd lib 不好的地方 应该是如果程式有漏洞 很好开shell吧XD
作者:
CoNsTaR ((const *))
2016-09-14 02:06:00看你态度不错补推 不过不是很赞同你讲的很多部分看来或许你真的不是一个这样的人 如果是我误会你 你有你该有的道歉批评我助教就免了 学习是一定要的
作者:
Sirctal (母猪母猪 夜里哭哭)
2016-09-14 09:01:00大家是吃了火药喔 好好谈嘛 QQ
作者:
askacis (ASKA)
2016-09-14 12:25:00什么叫基本?你连gcc告诉你Error code都不愿google一下还一厢情愿的自以为是,要是我team的新人早就被我电了看了你的长篇大论跟你遇到问题表现出来的行为是两回事
作者:
art1 (人,原来不是人)
2016-09-14 13:45:00搞不懂在嘘什么,愿意教别人吃鱼已经是很佛心的教法了
作者: yvb 2016-09-14 17:11:00
是教吃鱼还是教用钓竿? 还是教 要吃鱼一定要自己钓才好吃? :P
作者:
Caesar08 (Caesar)
2016-09-14 17:22:00教别人吃鱼?????
作者:
wtchen (没有存在感的人)
2016-09-14 18:13:00大家发文注意语气喔
作者:
CaptainH (Cannon)
2016-09-15 03:12:00你学长是谁?一句废话有什么特别写出来的必要?其实你只给code的话搞不好还不会有人嘘XD
作者: longlongint (华哥尔) 2016-09-18 02:51:00
如果我工作压力想找沙包打我会去健身房专案合作建议用通用的function学习取向 如果有空可以刻一个
关于你的code我有两个建议...如果你想自己刻又清楚自己做什么,那么你循环起始条件就应该设好,何必以0起始?另外最后字串结束的\0不是一定要加,而是多数人习惯是变量使用前都会初始,memset之后又何必多此一举
作者:
APTON (玮玮)
2016-09-22 13:55:00这篇对工作人事或许没用 但是对还有漫长路程的学生来说是个好练习阿而且问问题的人又没说明问题的用途, 这样回应有什么不好
我觉得以学习来说了解原理是很好的学习方式,但是懂了之后能call就call吧,特别是有即刻需要的话还慢慢自己写太麻烦
能理解当然是很好啦,但是工作怎么可能什么都让你自己刻