我怎样才能在C中获得矢量的大小?

时间:2011-06-26 15:30:43

标签: c

我有这个功能:

void receive_message(int sock, char buffer[]) {

    int test = recv(sock, buffer, strlen(buffer), 0);
    buffer[test] = '\0';
}

函数recv()的第三个参数不起作用。显然我不能使用strlen(),因为缓冲区没有\0sizeof()也没有帮助我。我希望我能在不将第三个参数传递给我的函数receive_message()的情况下做到这一点。

谢谢。

4 个答案:

答案 0 :(得分:10)

你希望徒劳无功; C数组没有那么多结构。你需要自己传递大小。

答案 1 :(得分:2)

buffer不是矢量。它可能看起来像一个数组,但由于它被声明为函数参数,它实际上是一个指针。没有办法知道指针指向的缓冲区有多长,除非你知道它以一个sentinel值终止(例如\0)。

让函数采用额外的参数可能是最容易的。

答案 2 :(得分:1)

如果不是零终止,则无法获得大小。你别无选择,只能将大小作为参数传递或将字符串零终止。

答案 3 :(得分:1)

你不能这样做。传递额外参数,或在缓冲区定义和使用中使用#define