sscanf在读取2个整数时,提取0表示第一个数字

时间:2012-02-14 10:12:01

标签: c scanf

我正在使用

阅读格式化数据

sscanf(buf,"%d %d",&a,&b);

data format = (unsigned short SPACE unsigned short);

但是当我读它时只能从缓冲区中成功提取第二个整数值,因为它首先提取0.我正在检查(printf("nRecvd %d and %d",a,b))我正在从套接字读取并验证了缓冲区值。一切都好,直到sscanf。

char buf[MAXBUFL];
unsigned short a, b;
if (sscanf(buf,"%d %d",&a,&b) != 2)
      snprintf (buf, sizeof(buf), "data error\r\n");

    else
      {
      printf("\nRecvd %d and %d",a,b);}

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您正在扫描short个变量,这意味着您必须告诉sscanf。你需要:

if (sscanf(buf,"%hd %hd",&a,&b) != 2)

scanf的手册页中对此进行了解释。