Wireshark mailing list archives

Re: Sprintf weirdness


From: Guy Harris <guy () alum mit edu>
Date: Wed, 2 Jun 2010 01:57:46 -0700


On Jun 1, 2010, at 10:10 PM, Ian Schorr wrote:

As you mention later, MS Visual Studio 2008 does not include those
macros.  From the sounds of it, regardless of my exact problem (which
I'm guessing is in this general area anyway), I'm probably better off
abandoning sprintf altogether?

If you have guint32 and guint64 as types, you're presumably using GLib, in which case you have GStrings:

        http://library.gnome.org/devel/glib/stable/glib-Strings.html

which means you can allocate a GString, use g_string_printf() to initially format it, and use g_string_append_printf() 
to format and append to it; there aren't any worries about overflowing it, as it grows as necessary, or about 
conveniently appending to it.

If you use that, you'd use G_GINT64_MODIFIER in the format, e.g.

        GString *string;
        guint64 longlong;

                ...

        g_string_printf(string, "longlong = " G_GINT64_MODIFIER "u", longlong);

That's available on all platforms, so you don't have to worry about whether the platform has the PRI[douxX]64 macros or 
not.
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: