在C中使用rand()

在C中使用rand(),c,C,我在TCP服务器中使用rand()函数发送一个大的1d数组,其中包含生成的随机值,数据类型为uint8\t,但由于我在TCP客户端没有收到任何数据,因此数据类型可能会有问题。控制台还告诉我,即使我使用rand()函数,代码每次都会生成相同的“204”值 #define DEFAULT_BUFLEN 19200 int main(int argc , char *argv[]) { WSADATA wsa; SOCKET server_socket, client_socket; struct

我在TCP服务器中使用rand()函数发送一个大的1d数组,其中包含生成的随机值,数据类型为uint8\t,但由于我在TCP客户端没有收到任何数据,因此数据类型可能会有问题。控制台还告诉我,即使我使用rand()函数,代码每次都会生成相同的“204”值

#define DEFAULT_BUFLEN 19200

int main(int argc , char *argv[])
{
WSADATA wsa;
SOCKET server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
int c, iResult;
char sendbuf [DEFAULT_BUFLEN];
int sendbuflen = DEFAULT_BUFLEN;
uint8_t* p;
int i;


// Send uint8_t data to client
p = (uint8_t*)sendbuf;

for (i = 0; i < 19200; i++)
{
  p[i] = rand() % 256; //range 0-255 */
  i++;
  printf("%d\n", p[i]);
}
return 0;

iResult = send(client_socket, sendbuf, sendbuflen, 0);
}
#定义默认值_buflen19200
int main(int argc,char*argv[])
{
WSADATA wsa;
套接字服务器\u套接字、客户端\u套接字;
服务器地址、客户端地址中的结构sockaddr\u;
INTC,iResult;
char sendbuf[默认值];
int sendbuflen=默认值;
uint8_t*p;
int i;
//向客户端发送uint8_t数据
p=(uint8_t*)sendbuf;
对于(i=0;i<19200;i++)
{
p[i]=rand()%256;//范围0-255*/
i++;
printf(“%d\n”,p[i]);
}
返回0;
iResult=send(客户端_套接字,sendbuf,sendbuflen,0);
}

您需要为您的
rand
功能添加种子。使用
srand(时间(NULL))
进行种子设定。同时删除
i++循环体的
语句。

您需要为
rand
函数设定种子。使用
srand(时间(NULL))
进行种子设定。同时删除
i++循环体的
语句。

您需要为
rand
函数设定种子。使用
srand(时间(NULL))
进行种子设定。同时删除
i++循环体的
语句。

您需要为
rand
函数设定种子。使用
srand(时间(NULL))
进行种子设定。同时删除
i++for
循环体的
语句。

这里的错误是,在打印生成并存储在数组前面位置的随机值之前,您正在递增迭代变量i。每次调用printf时都会看到204的原因是printf正在打印一个未初始化的整数,而编译器上的整数恰好是204。如果在for循环之前将sendbuf数组memset为零,那么每次都会看到printf print zero

这是sendbuf数组包含的当前代码:

[0]=随机值
[1] =未初始化值这里的错误是,在打印生成并存储在数组前面位置的随机值之前,您正在递增迭代变量i。每次调用printf时都会看到204的原因是printf正在打印一个未初始化的整数,而编译器上的整数恰好是204。如果在for循环之前将sendbuf数组memset为零,那么每次都会看到printf print zero

这是sendbuf数组包含的当前代码:

[0]=随机值
[1] =未初始化值这里的错误是,在打印生成并存储在数组前面位置的随机值之前,您正在递增迭代变量i。每次调用printf时都会看到204的原因是printf正在打印一个未初始化的整数,而编译器上的整数恰好是204。如果在for循环之前将sendbuf数组memset为零,那么每次都会看到printf print zero

这是sendbuf数组包含的当前代码:

[0]=随机值
[1] =未初始化值这里的错误是,在打印生成并存储在数组前面位置的随机值之前,您正在递增迭代变量i。每次调用printf时都会看到204的原因是printf正在打印一个未初始化的整数,而编译器上的整数恰好是204。如果在for循环之前将sendbuf数组memset为零,那么每次都会看到printf print zero

这是sendbuf数组包含的当前代码:

[0]=随机值
[1]=未初始化值您在循环中增加了两次
i
。您需要先调用
srand
,然后在调用
send
之前返回
。您在循环中增加了两次
i
。您需要先调用
srand
然后在调用
send
之前返回
。您增加了
i
循环中两次。您需要先调用
srand
first,然后在调用
send
之前返回
。在循环中增加
i
两次。您需要先调用
srand
然后在调用
send
之前返回