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

作者: hardware (哈味)   2016-09-12 14:45:37
開發平台(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;
}
作者: SSARCandy (SSARCandy)   2016-09-12 14:59:00
foo = line+4;printf("%s", foo);
作者: hardware (哈味)   2016-09-12 15:04:00
樓上 這樣缺少要抓六個位元
作者: yvb   2016-09-12 15:08:00
%.6s
作者: pili100 (zelda)   2016-09-12 16:43:00
use memmove function
作者: LPH66 (-6.2598534e+18f)   2016-09-12 20:09:00
strncpy 然後記得自己加 '\0'
作者: EdisonX (卡卡獸)   2016-09-12 23:23:00
推 %.6s 和 strncpy
作者: yvb   2016-09-13 13:20:00
後續回覆那篇筆戰得真熱鬧... 來此補充以免變那篇的雜訊 :P1. 若只是想印出來, 就用 printf 或 fprintf2. 若準備了 char buf[N] 來存放, 就用 sprintf 或 snprintf3. 若用 char *ptr 接新字串, 用 strndup (GLIBC 2.10 以上)或取得空間搭配 2; 但記得用完要釋放掉, 以免 memory leak相關細節請自行查 man page 或 google.
作者: dibery (簡哥)   2016-09-15 00:56:00
補充樓上,需要 free() 的原因是 strdup() 會用 malloc()來產生一個新字串所需的空間,所以別誤用到 delete 了

Links booklink

Contact Us: admin [ a t ] ucptt.com