1

我有一个输入缓冲区,格式为

-----------------------------41184676334

Some Content
More Content



-----------------------------41184676334

More ContenT!!

一个变量,将存储边界标记 -----------------41184676334

我想知道两个边界标记之间的长度

这是我所做的

char *temp, *temp1;

temp = strstr(input,boundarymarker);
temp1 = strstr(temp+ strlen(boundarymarker),boundarymarker);

int length = temp1-temp; 

长度返回一个负值。不能只减法吗?如果不是正确的解决方案是什么?它返回的价值是多少?

4

3 回答 3

5

strstr在两个调用之一中没有找到最有可能的边界标记。你能检查一下NULLtemp 和 temp1 吗?

于 2013-06-19T12:51:13.273 回答
0

根据您的编译器/标志int,可能有也可能没有足够大的存储容器来保存指针差异。

如果您正在使用数字指针值,请使用该intptr_t类型。根据定义,它保证足够大以容纳指针值。

#include <stdint.h>

intptr_t length = (intptr_t)temp1 - (intptr_t)temp; 
于 2013-06-19T14:07:44.373 回答
-1

尝试使用strpos查找标记的第一次出现,然后使用它查找第二次出现并减去这些结果。

int pos1 = strpos( temp, marker);
int pos2 = strpos( temp + pos1 + strlen(marker), marker );
printf( " %d ", pos2 - pos1);
于 2013-06-19T12:51:46.303 回答