我在这段代码中使用 sscanf
while(totalByte < sizeof(rdata))
{
read(client_sockfd, &buffer[totalByte],1);
printf("bytes[%d] : %x \n", totalByte, buffer[++totalByte]);
}
使用这段代码,我得到了这样的结果
客户端发送 1 1 +
bytes[0] : 0
bytes[1] : 0
bytes[2] : 0
bytes[3] : 1
bytes[4] : 0
bytes[5] : 0
bytes[6] : 0
bytes[7] : 1
bytes[8] : 2b
bytes[9] : 0
bytes[10] : 0
bytes[11] : 0
bytes[12] : 0
bytes[13] : 0
bytes[14] : 0
bytes[15] : 0
bytes[16] : 0
bytes[17] : 0
bytes[18] : 0
bytes[19] : 0
得到了结果
然后我使用 sscanf 方法
sscanf(buffer,"%d%d%c" ,&rdata.left_num, &rdata.right_num, rdata.op);
printf("%d %c %d \n", ntohl(rdata.left_num),rdata.op,ntohl(rdata.right_num));
但是当打印 rdata(结构)的值时,得到一个 0 值(初始值)。
0 0
我知道 sscanf 方法拆分字符串并插入一个值
对我有什么误解吗?
这就是我使用的结构
struct cal_data
{
int left_num;
int right_num;
char op;
int result;
int error;
};