Re: [問題] 從字串中的第5個位元開始抓字串

看板C_and_CPP (C/C++)作者時間8年前 (2016/09/12 22:43), 8年前編輯推噓25(32795)
留言134則, 26人參與, 最新討論串2/2 (看更多)
※ 引述《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'; //這行一定要記得加,很多人會忘記 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.187.173 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1473691382.A.706.html

09/12 22:59, , 1F
原文的回文就有解答了
09/12 22:59, 1F
我知道,但是那個回應是對於直接印出的解法 如果後續還要做字串處理,那就要先把字串存起來 ※ 編輯: jacky1989 (111.250.187.173), 09/12/2016 23:03:56

09/12 23:04, , 2F
... 你真的有看原文的回文嗎?
09/12 23:04, 2F
不知道你說的是? ※ 編輯: jacky1989 (111.250.187.173), 09/12/2016 23:05:15

09/12 23:06, , 3F
strncpy...
09/12 23:06, 3F
那我想你根本沒有看清楚我的回答 我是說, 如果沒有處理函式 strncpy是在string.h裡面的處理函式沒錯吧?! ※ 編輯: jacky1989 (111.250.187.173), 09/12/2016 23:09:35

09/12 23:12, , 4F
就include就好了,strncpy也是standard c function
09/12 23:12, 4F
include就好?我不認為這是一個好現象,了解字串處理運作方式 比直接使用重要多了,不要覺得說這是一個很簡單的函式,每個人一定會 就是有人不會,不然怎麼會有人問問題呢?而且你知道每次include一個header file 會多多少資源進來嗎??如果只需要某樣字串處理功能,那何不自己寫就好了? 我不敢說我自己懂很多,但是我自己從編譯器(turbo C)裡面看過 當我include不同header file時,所編譯的檔案數是多很多的 case 1: #include<stdlib.h> #include<stdio.h> case 2: #include<stdlib.h> #include<stdio.h> #include<math.h> 而且我們公司在GCC時,呼叫math.h時,根本沒有pow(double *,double *)這個函數 所以不是include標準函式庫就一定保證標準函式什麼都會有 以上有錯誤歡迎高手指教,感謝 ※ 編輯: jacky1989 (111.250.187.173), 09/12/2016 23:24:18

09/12 23:31, , 5F
1. 情非得已情況下永遠不要自己造輪子。 2. 自己寫的比較
09/12 23:31, 5F

09/12 23:31, , 6F
慢,沒經過驗證。 3. pow (double * , double *) 是 ???
09/12 23:31, 6F

09/12 23:33, , 7F
math.h 的確沒有 pow(double * , double *) 啊 @@
09/12 23:33, 7F
阿pow的參數型態不是double是什麼??只是裡面是區域變數罷了 double __cdecl pow(_In_ double _X, _In_ double _Y); 完整標準函式定義貼上來這樣可以嗎??? 我改正=> double pow(double,double);

09/12 23:34, , 8F
話說回來,如果今天工作看到有人自己寫 strcpy,我想有厭惡
09/12 23:34, 8F

09/12 23:34, , 9F
是阿 不是好現象,那你就都全部自己刻吧
09/12 23:34, 9F

09/12 23:34, , 10F
感的應該不只有我一人 @@ 原因就如上所述。
09/12 23:34, 10F
工作歸工作,選擇性會不同,原PO沒說工作或是作業或是自己好玩 我只是提供一個萬用解法,自己造輪是一種學習,知道怎麼用,跟要自己造輪是不一樣的 不了解運作方式,只知道怎麼用,我看過我學弟的例子 問他strncpy運作原理,概念就好,不用全對 只知道這是可以複製A字串的n個字元到B字串,為什麼可以做,不知道,我當場傻眼

09/12 23:37, , 11F
你只需要一個strncpy,就只好自己寫一個strncpy
09/12 23:37, 11F

09/12 23:37, , 12F
下次你只需要一個qsort,就只好自己做quick sort
09/12 23:37, 12F
我都是自己玩自己造沒錯 ※ 編輯: jacky1989 (111.250.187.173), 09/12/2016 23:49:02

09/12 23:39, , 13F
@Caesar08,下次需要 cv::imread / cv::imwrite的時候..@@
09/12 23:39, 13F

09/12 23:41, , 14F
另外,standard library可以預先編譯好,其實沒有編譯的
09/12 23:41, 14F

09/12 23:42, , 15F
檔案數是多很多的 這種問題,如果是C++你才有可能要擔心
09/12 23:42, 15F
※ 編輯: jacky1989 (111.250.187.173), 09/12/2016 23:54:42

09/13 00:00, , 16F
學長上過班沒?? 如果當自己練習當然是很好 但是出去後
09/13 00:00, 16F

09/13 00:01, , 17F
你如果自己硬幹 你可能會被人家婊死
09/13 00:01, 17F

09/13 00:01, , 18F
抱歉沒看好QQ
09/13 00:01, 18F
我的工作不需要用到C,但是我有說過,當你要什麼沒什麼時 就只能自己造輪了,就如同我在公司想要呼叫pow函數,GCC就是跟我說,沒有這個函數 ※ 編輯: jacky1989 (111.250.187.173), 09/13/2016 00:02:49

09/13 00:07, , 19F
自己刻func的例子通常是寫MCU或是bootcode
09/13 00:07, 19F

09/13 00:07, , 20F
要不就是你GCC太舊,不然就是你不會用pow
09/13 00:07, 20F
那我想是版本太舊了,因為我在Visual Studio還有Turbo C用法都一樣 double result; result = pow(5.0,6.0); ※ 編輯: jacky1989 (111.250.187.173), 09/13/2016 00:10:24

09/13 00:10, , 21F
未看先猜 : gcc -o math math.c -lm 恭喜你白刻了。 XD
09/13 00:10, 21F

09/13 00:13, , 22F
就連uclibc都有pow()了,你公司gcc是甚麼版本? 自己編的?
09/13 00:13, 22F
我會去確認看看,再跟各位回報 ※ 編輯: jacky1989 (111.250.187.173), 09/13/2016 00:14:02

09/13 00:14, , 23F
疑!你的工作用不到C,那怎還會有這問題呢??
09/13 00:14, 23F
因為我用C來做數據整理

09/13 00:15, , 24F
另外錯誤訊息貼上來,才知道是compile time還是linking
09/13 00:15, 24F
※ 編輯: jacky1989 (111.250.187.173), 09/13/2016 00:16:17

09/13 00:16, , 25F
time報錯,linking time 的話加個-lm 說不定就搞定了wwww
09/13 00:16, 25F

09/13 00:36, , 26F
天啊 ... 拿 Turbo C 來比。
09/13 00:36, 26F
還有 71 則推文
還有 13 段內文
09/14 01:40, , 98F
然後順便幫樓上回答一下 你連基本是什麼都還要問那你還是
09/14 01:40, 98F

09/14 01:40, , 99F
不要來討論好了 另外學好就是你一直以為你自己已經做到
09/14 01:40, 99F

09/14 01:40, , 100F
的事 謝謝
09/14 01:40, 100F
而且我可是從來都沒有說我學好,我想我一直強調的都是我的過往經驗 版上比我強的高手有太多太多了,那我提出一種解法無非也是想要經由回答問題 來交流討論,來了解自己的作法到底對不對,如果不對,那我絕對請版主刪文 而且我也承認很多網友說的,在工作或是專案合作上應該使用標準函式庫,而不是自己造 輪 我也說,造輪就自己在學習時應該要做的事情,是聲波傳到你那邊慢了嗎?? ※ 編輯: jacky1989 (111.250.187.173), 09/14/2016 01:55:35

09/14 01:55, , 101F
Std lib 不好的地方 應該是如果程式有漏洞 很好開shell
09/14 01:55, 101F

09/14 01:55, , 102F
Std lib 不好的地方 應該是如果程式有漏洞 很好開shell
09/14 01:55, 102F

09/14 01:55, , 103F
吧XD
09/14 01:55, 103F

09/14 02:06, , 104F
看你態度不錯補推 不過不是很贊同你講的很多部分
09/14 02:06, 104F

09/14 02:06, , 105F
看來或許你真的不是一個這樣的人 如果是我誤會你 你有你
09/14 02:06, 105F

09/14 02:06, , 106F
該有的道歉
09/14 02:06, 106F
感謝你的指教,但是我真的還是要再說一次,你大一的助教態度真的不是對的 也許他只是被教授指派,隨便帶一帶 希望往後你不要被這段不好的經驗影響寫程式的愉悅心情 以後還是歡迎對於我不對的地方提出指導,這樣我才會更進步 我也會修正回覆所用的言詞,以避免不必要的誤會 一起加油吧!! ※ 編輯: jacky1989 (111.250.187.173), 09/14/2016 02:16:38

09/14 02:27, , 107F
批評我助教就免了 學習是一定要的
09/14 02:27, 107F

09/14 09:01, , 108F
大家是吃了火藥喔 好好談嘛 QQ
09/14 09:01, 108F
沒事的,只是認知出了一點問題而已 ※ 編輯: jacky1989 (101.14.134.38), 09/14/2016 10:27:14

09/14 12:25, , 109F
甚麼叫基本?你連gcc告訴你Error code都不願google一下
09/14 12:25, 109F

09/14 12:25, , 110F
還一廂情願的自以為是,要是我team的新人早就被我電了
09/14 12:25, 110F

09/14 12:27, , 111F
看了你的長篇大論跟你遇到問題表現出來的行為是兩回事
09/14 12:27, 111F

09/14 13:45, , 112F
搞不懂在噓什麼,願意教別人吃魚已經是很佛心的教法了
09/14 13:45, 112F

09/14 17:11, , 113F
是教吃魚還是教用釣竿? 還是教 要吃魚一定要自己釣才好吃? :P
09/14 17:11, 113F

09/14 17:22, , 114F
教別人吃魚?????
09/14 17:22, 114F

09/14 18:13, , 115F
大家發文注意語氣喔
09/14 18:13, 115F

09/15 03:12, , 116F
你學長是誰?一句廢話有什麼特別寫出來的必要?
09/15 03:12, 116F

09/15 03:13, , 117F
其實你只給code的話搞不好還不會有人噓XD
09/15 03:13, 117F

09/15 23:11, , 118F
你開心就好
09/15 23:11, 118F

09/18 02:51, , 119F
如果我工作壓力想找沙包打
09/18 02:51, 119F

09/18 02:52, , 120F
我會去健身房
09/18 02:52, 120F

09/18 03:07, , 121F
專案合作建議用通用的function
09/18 03:07, 121F

09/18 03:07, , 122F
學習取向 如果有空可以刻一個
09/18 03:07, 122F

09/19 10:52, , 123F
關於你的code我有兩個建議...如果你想自己刻又清楚自己
09/19 10:52, 123F

09/19 10:53, , 124F
做什麼,那麼你迴圈起始條件就應該設好,何必以0起始?
09/19 10:53, 124F

09/19 10:53, , 125F
另外最後字串結束的\0不是一定要加,而是多數人習慣
09/19 10:53, 125F

09/19 10:54, , 126F
是變數使用前都會初始,memset之後又何必多此一舉
09/19 10:54, 126F

09/19 11:33, , 127F
路過,朝聖
09/19 11:33, 127F

09/22 13:55, , 128F
這篇對工作人事或許沒用 但是對還有漫長路程的學生來說
09/22 13:55, 128F

09/22 13:55, , 129F
是個好練習阿
09/22 13:55, 129F

09/22 13:56, , 130F
而且問問題的人又沒說明問題的用途, 這樣回應有甚麼不好
09/22 13:56, 130F

09/22 15:22, , 131F
我覺得以學習來說瞭解原理是很好的學習方式,但是懂了之
09/22 15:22, 131F

09/22 15:22, , 132F
後能call就call吧,特別是有即刻需要的話還慢慢自己寫太
09/22 15:22, 132F

09/22 15:22, , 133F
麻煩
09/22 15:22, 133F

09/26 14:30, , 134F
能理解當然是很好啦,但是工作怎麼可能什麼都讓你自己刻
09/26 14:30, 134F
文章代碼(AID): #1NrhxsS6 (C_and_CPP)
文章代碼(AID): #1NrhxsS6 (C_and_CPP)