Длина строки между указателями
я столкнулся с небольшой проблемой и нуждаюсь в помощи:
Если у меня есть выделенный буфер символов, и у меня есть начальная и конечная точки, которые находятся где-то внутри этого буфера, и я хочу длину между этими двумя точками, как я могу ее найти?
Я.е
char * buf; //malloc of 100 chars
char * start; // some point in buff
char * end; // some point after start in buf
int length = &end-&start? or &start-&end?
//How to grab the length between these two points.
спасибо
4 ответов
просто
length = end - start;
без амперсандов и бросает. С указатель арифметика позволяет эту операцию.
это просто более поздний указатель минус более ранний указатель.
int length = end - start;
проверка и пример кода ниже:
int main(int argc, char* argv[])
{
char buffer[] = "Its a small world after all";
char* start = buffer+6; // "s" in SMALL
char* end = buffer+16; // "d" in WORLD
int length = end - start;
printf("Start is: %c\n", *start);
printf("End is: %c\n", *end);
printf("Length is: %d\n", length);
}