c - 标记一个 c 字符串

标签 c

我正在尝试获取/xxx/之后的字符串,必须有一个正斜杠,其中两个,然后是我需要提取的字符串。 这是我的代码,但我不知道在哪里设置空终止符,这里有一道数学题

char str[100] = "/709/usr/datapoint/nviTemp1";
char *tmp;
char token[100];

tmp = strchr(str+1, '/');
size_t len = (size_t)(tmp-str)+1;
strncpy(token, str+len, strlen(str+len));
strcat(token,"\0");

我想提取 /709/ 之后的所有内容,即 usr/datapoint/nviTemp1

请注意/709/是可变的,它可以是任何大小,但肯定会有两个正斜杠。

最佳答案

简单改进:

char str[100] = "/709/usr/datapoint/nviTemp1";
char *tmp;
char token[100];

tmp = strchr(str+1, '/');
if (tmp != NULL) strncpy(token, tmp + 1, sizeof(token)); else token[0] = '\0';

tmp 指向 "/709" 之后的斜杠,所以你想要的就在后面。 您不必手动计算长度。

此外,strncpy 最多复制(第三个参数)个字符,因此它应该是目标缓冲区的长度。

关于c - 标记一个 c 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33216449/

相关文章:

c - 处理来自 XML 文件构建的 gtkwidget 的事件

c - 写入/读取 FIFO 文件 - linux

c - 在结构类型之后声明的变量中重新定义变量

c# - Arduino 用 Visual C# 制作的软件无法正常工作

c - POSIX 信号量上限

c - GTK+3 自定义绘图区

c - 从 C 访问 lightuserdata

c - 有没有一种简单的方法可以从 C 中的字符串数组创建字符串?

c - 使用ffmpeg库编译c代码时出错

c - 从 C 调用 Intel 8086 汇编程序