2012-03-31 11 views
2

Ich bekomme diese Warnung von sccanf():sscanf 'Umwandlung fehlt am Ende des Formats'

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

, die aus dieser Linie kommt:

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

Hier s ein short ist.

Ich weiß, ich kann die Warnung ignorieren, aber bis zu diesem Punkt warnte ich frei, also würde ich es gerne zum Schweigen bringen, wenn möglich. Was ist sscanf() anders erwartet?

Antwort

5

Sie müssen %hd für eine short verwenden. %h ist nicht gültig für sich. Vom man page:

h

Zeigt an, dass die Umwandlung eines von d wird, i, o, u, x, X oder n und der nächste Zeiger ist ein Zeiger auf eine short int oder unsigned short int (statt int).

Bitte ignorieren Sie Warnungen nicht - sie bedeuten normalerweise, dass etwas falsch gelaufen ist. Dieser Fall ist ein gutes Beispiel - Ihr Compiler schien die "richtige Sache" zu tun, aber sich auf undefiniertes Verhalten zu verlassen, ist immer eine schlechte Idee.

+0

Perfekt, danke :) – d11wtq

Verwandte Themen