c - 如何使用 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语言。
解决方案
试试看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
.
推荐阅读
- javascript - 如何更改付款方式选项卡的颜色
- android - Android Studio 不会应用代码更改
- sql - 用整数获取月份
- youtube-api - 无效的 `Podfile` 文件:语法错误,意外的 tIDENTIFIER,期望输入结束
- asciidoctor - 数字计数在植物扩展中不起作用(asciidoctor-diagram)
- kubernetes - 如何在 gke 中授予用户命名空间访问权限?
- blob - firebird 中的 Blob 存储增加了数据库文件的大小
- installation - 无法在 Ubuntu 19.04 上运行 Cisco Packet Tracer
- vue.js - 模板属性中的动态循环
- c# - 如何使文本框(多行)的大小适应 ASP .NET C# 中的文本?