【问题标题】:Parsing a "String"( char array) in C for string ,int and int在 C 中解析字符串、int 和 int 的“字符串”(字符数组)
【发布时间】:2014-10-22 03:18:58
【问题描述】:

我有一个 UDP 套接字服务器和客户端设置,客户端从服务器请求一些信息,以保存 [ID, " ",choice, " ", request] 的 char 数组的形式发送请求它们分别是字符串、整数和整数。我需要能够从数组中解析出这三个参数以访问我的数据库以发回正确的信息。到目前为止,我已经尝试使用 while 循环来解析这些,但不幸的是,这不起作用。对更好的解决方案有什么建议吗?第一个 int 将是一个数字长,但是第二个可以长。

char *idToCheck;
int k = 0;
while(strcmp(messBuffer[k]," ") == 1){
    idToCheck += messBuffer[k];
}
int choice = messBuffer[k++];
int request;
while(strcmp(messBuffer[k],"\0") == 1){
     ????
}

【问题讨论】:

  • 不清楚您的数据是如何编码的。整数也是数据包中的字符串,还是二进制值?如果有,尺寸是多少?您应该显示您尝试解析的 UDP 有效负载的示例十六进制转储。
  • 将整个消息(确保获取所有消息)读入本地缓冲区,然后使用 sscanf() 之类的东西将这三个项目解析为单独的变量。
  • user36...您实际上得到了我正在寻找的完美答案。超级简单超级棒!!我希望我能让你的正确答案

标签: c arrays string parsing


【解决方案1】:

一些事情:

  • 您需要将 idToCheck 指向或定义为拥有一些存储空间。
  • 不要使用 strcmp 来比较字符 - 只需使用 ==

如何让您开始 - 假设 Id 不会超过 MAX_ID_LEN。

#define MAX_ID_LEN  80
char idToCheck[MAX_ID_LEN]
int i;

for (i = 0; i < MAX_ID_LEN; i++) {
   if (messBuffer[i] != ' ') {
       idToCheck[i] = messBUffer[i];
   }
   else {
       break;
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多