首页 > 解决方案 > 如何使用 C 截断特定的 char[]

问题描述

我从 redis-server 收到下一个字符 []:

text = "e o 5\n\000\000\001\000\000\000\000\000\000\000\000\020\000\000\000"

我想删除 '\n' 之后的所有内容,我得到:

text = "e o 5" 

文本的长度是可变的,有时我会收到:

text = "x f 5 5 6 1\n\000\000\001\000\000\000\000\000\000\000\000\020\000\000\000"

或者

text = "h f 5 1\n\000\000\001\000\000\000\000\000\000\000\000\020\000\000\000"

但是,每次都有'\n'。

我该怎么做?使用C语言。

标签: c

解决方案


试试看strtok()strtok()可以用特定的分隔符分割字符串。

String: xxx\nyyy\nzzz 
Delimiter: \n
Output: 
        xxx
        yyy
        zzz

假设buff是一个char *指向可写内存区域的变量。

char *buff = malloc(sizeof(BUFF_SIZE));
// Or char buff[BUFF_SIZE];

// Load data into buff

// split buff with `\n`
char *token;
token = strtok(buff, "\n");
if (token)
{
    printf("First substring split by newline: %s\n", token);
}
while (token = strtok(NULL, "\n"))
{
    printf("Next substring split by newline: %s\n", token);
}

查看更多详细信息strtok(),只需键入man strtok.


推荐阅读