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