看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.164.19 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1473662739.A.D38.html
SSARCandy: foo = line+4; 09/12 14:59
SSARCandy: printf("%s", foo); 09/12 14:59
hardware: 樓上 這樣缺少要抓六個位元 09/12 15:04
yvb: %.6s 09/12 15:08
pili100: use memmove function 09/12 16:43
LPH66: strncpy 然後記得自己加 '\0' 09/12 20:09
EdisonX: 推 %.6s 和 strncpy 09/12 23:23
yvb: 後續回覆那篇筆戰得真熱鬧... 來此補充以免變那篇的雜訊 :P 09/13 13:20
yvb: 1. 若只是想印出來, 就用 printf 或 fprintf 09/13 13:20
yvb: 2. 若準備了 char buf[N] 來存放, 就用 sprintf 或 snprintf 09/13 13:20
yvb: 3. 若用 char *ptr 接新字串, 用 strndup (GLIBC 2.10 以上) 09/13 13:21
yvb: 或取得空間搭配 2; 但記得用完要釋放掉, 以免 memory leak 09/13 13:22
yvb: 相關細節請自行查 man page 或 google. 09/13 13:22
dibery: 補充樓上,需要 free() 的原因是 strdup() 會用 malloc() 09/15 00:56
dibery: 來產生一個新字串所需的空間,所以別誤用到 delete 了 09/15 00:56