我正在尝试获取/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/