私はこのコードで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;
};