10

私は小さな問題に遭遇し、助けが必要です:

文字の割り当てられたバッファーがあり、このバッファー内のどこかに始点と終点があり、これらの 2 つの点の間の長さが必要な場合、どうすればそれを見つけることができますか?

すなわち

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

4 に答える 4

27

ただ

length = end - start;

アンパサンドとキャストなし。C ポインター演算では、この操作が可能です。

于 2009-07-06T13:02:34.063 に答える
8

これは、後のポインターから前のポインターを引いたものです。

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);
}
于 2009-07-06T13:02:19.320 に答える
1

そのような長さを保持するために存在するタイプ ptrdiff_t さえあります。「stddef.h」によって提供されます

于 2009-08-14T22:49:52.490 に答える
0

この C ステートメントは、end と start の差を計算します。単に:

int length = (int)(end - start);
于 2009-07-06T13:08:47.023 に答える