用C解析“字符串”(char数组)为字符串,整数和int
问题描述:
我有一个UDP套接字服务器和客户端设置在客户端请求来自服务器的一些信息,发送在字符的形式的请求数组,它包含分别是字符串,int和int的[ID,“”,choice,“”,request]。我需要能够将这三个参数从数组中解析出来,以访问我的数据库以发回正确的信息。到目前为止,我已经使用了一段时间循环通过这些解析试过,但不幸的是这不是working.any建议,以更好的解决方案,工程?第一个int将是一位数字,然而第二个可以是长的。用C解析“字符串”(char数组)为字符串,整数和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){
????
}
答
有几件事情:
- 你需要有idToCheck点或被限定为具有一定的存储。
- 不要使用STRCMP比较字符 - 只使用==
这样如何开始你出去 - 假设标识将不得超过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;
}
}
目前尚不清楚您的数据是如何编码的。包中的整数是否也是字符串,还是二进制值?如果是这样,大小?你应该显示你想要解析的UDP负载的十六进制转储。 – 2014-10-22 03:55:40
读取整个消息(一定要得到的所有消息)到本地缓冲区,然后使用类似的sscanf()来解析出三个项目为单个变量。 – user3629249 2014-10-22 10:25:01
user36 ......你确实有完美的答案我一直在寻找。超级简单和超级真棒!我希望我能让你的答案正确 – user3704079 2014-10-22 20:52:36