【问题标题】:How to put digits of a long long int into a long long int array如何将 long long int 的数字放入 long long int 数组
【发布时间】:2013-09-30 02:05:15
【问题描述】:

好的,所以我正在尝试实现客户端-服务器程序(套接字编程)。

我的客户发送一个 long long int 嵌入在这样的字符串中:

char copy[10];
sprintf(send_data,"%s","Pre=");

for(i=0;i<7;i++){
    sprintf(copy,"%lld",premaster[i]);
    strcat(send_data,copy);
}

printf("\nSending CLIENT_KEY_EXCHANGE message\n");
send(sock,send_data,strlen(send_data), 0);

所以 send_data 看起来像 Pre=278262617263

现在在服务器端是这样的:

long long int preMaster;
long long int pre[100]={0};

numBytes = recv(clntSock,inMsg,1024,0); 
inMsg[numBytes] = '\0';

sscanf(inMsg, "Pre=%lld", &preMaster);

现在我想把这个 preMaster 转换成 pre 数组的元素。我该怎么做呢?

【问题讨论】:

  • 顺便说一句:你的copy[10] 太小了。一个简单的可移植缓冲区大小是copy[sizeof(long long)*3 + 3]
  • 感谢我在我的代码中实现了这一点

标签: c arrays sockets gcc int


【解决方案1】:

您不能这样做,因为您发送的信息不明确:Pre=278262617263 可能意味着以下任何一种:

  • 一个数字的数组278262617263
  • 两个数字的数组278262617263
  • 两个数字的数组278262617263
  • 278262617263 两个数字的数组
  • ...更多相同
  • 三个数字的数组278262617263
  • ...我想你明白了

解决此问题需要首先修复发件人:确保使用分隔符分隔数字,并可选择发送数组中的项目数以避免动态重新分配 - 例如,

Pre=5:27,826,26,17,263

不再模棱两可:它表示您要发送 5 个项目,并且这些项目是分隔的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多