sscanf при чтении 2 целых чисел, извлекает 0 для первой цифры - PullRequest
1 голос
/ 14 февраля 2012

Я читаю отформатированные данные с

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

data format = (unsigned short SPACE unsigned short);

но когда я читаю, он только успешно извлекает 2-е целочисленное значение из буфера, для первого он извлекает 0. Я проверяю с помощью (printf("nRecvd %d and %d",a,b)), что я читаю из сокета, и я проверял значения буфера. Все хорошо до тех пор, пока не будет.

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 Ответ

2 голосов
/ 14 февраля 2012

Вы сканируете в short переменные, что означает, что вы должны сообщить sscanf, что.Вам необходимо:

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

Это объяснено на странице руководства для scanf.

...