庫洛 發問時間: 電腦與網際網路程式設計 · 1 0 年前

有關c語言中字串的分割問題?

我從RS232取字串到自己設定的buffer[1024],

buffer內容大概就是

\"$a,b,c,d\\r\\n$s,d,f,g\\r\\n$w,r,t...\",

我要把資料存在buffer2變成以下格式好分析abcd的內容,

$a,b,c,d\\r\\n

$s,d,f,g\\r\\n

.

.

.

我有試過用strtok,但是字串會漏字,不知道有什麼方法呢?

謝謝大家

如果可以可否寫個程式參考一下呢?

2 個解答

評分
  • 1 0 年前
    最佳解答

    不請楚你講啥

    你的切割是原是啥,"\r\n"?

    是的話就是用

    #include <string.h>

    #include <stdio.h>

    int main()

    {

    char s[1024] = "$a,b,c,d\r\n$s,d,f,g\r\n$w,r,t...";

    char *delim="\r\n";

    char *p;

    printf("%s\n",strtok(s,delim)); // 第一次字串

    while((p=strtok(NULL,delim))){ // 第二次之後字串

    printf("%s\n",p);

    }

    return 1;

    }

    結果會是

    $a,b,c,d

    $$s,d,f,g

    $w,r,t...

    不知道這樣有沒有解決到你的問題

    參考資料: 自己
    • Commenter avatar登入以對解答發表意見
  • 1 0 年前

    不知您所謂的『字串會漏字』是什麼意思?使用strtok會破壞原字串,他會以null來取代搜到的分隔字元,如果您buffer中的每個字元都是必要的,那麼搜到的結果您必須再補上您所用的分隔字元,例如分隔字元是用"\n",那麼第一次的結果應該是"$a,b,c,d\r",您自己必須再補上"\n"

    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。