sscanf «у преобразования отсутствует тип в конце формата» - PullRequest
2 голосов
/ 31 марта 2012

Я получаю это предупреждение от sccanf():

../../../../ext/oedipus/oedipus.c:211: warning: conversion lacks type at end of format

, которое приходит из этой строки:

sscanf(v, "%h", &s);

Здесь s является short.

Я знаю, что могу игнорировать предупреждение, но до этого момента я предупреждал бесплатно, поэтому я хотел бы замолчать, если это возможно.Что sscanf() ожидает по-другому?

1 Ответ

5 голосов
/ 31 марта 2012

Вам необходимо использовать %hd для short.%h не является действительным само по себе.Из справочной страницы :

h

Указывает, что преобразование будет одним из d , i , o , u , x , X или n и следующийуказатель является указателем на short int или unsigned short int (вместо int ).

Пожалуйста, не игнорируйтепредупреждения - они обычно означают, что что-то пошло не так.Этот пример является хорошим примером - ваш компилятор, похоже, поступил «правильно», но полагаться на неопределенное поведение всегда плохая идея.

...