2010-03-01 8 views
14

Die Probleme:Gibt es eine kostenlose Implementierung von printf für .net?

Gibt es eine freie Implementierung von printf/sprintf für das .net-Framework? Abgesehen von dem obigen Link konnte ich nichts finden.

Danke!

Update:

Danke für die Hilfe, auch wenn Sie nichts finden können. Das heißt, ich muss es einfach selbst machen (ich versuchte es zu vermeiden, aber naja ...)
Ich habe eine Sprintf-Funktion entwickelt, die grundlegende Formatstrings unterstützt. Sie finden sie hier: https://sourceforge.net/projects/printfnet/. Ich werde versuchen, es zu einer vollständigen Implementierung zu machen, wenn ich kann.

+1

Ich weiß nicht, warum das so viele Upvotes hat. Eine Implementierung mit Regex kann wahrscheinlich in 30-50 Zeilen Trivial-Code durchgeführt werden ... – leppie

+0

Ich bin wirklich neugierig, warum Sie unbedingt printf ... – swilliams

+0

Warum können Sie nicht die CPOL-Lizenz verwenden? Ich kann nicht sehen, wie sich das auf Ihre GPL-Anforderung auswirkt. – leppie

Antwort

2

Wie wäre es mit einem verwalteten C++ - Wrapper? Ziemlich sicher, dass Sie Printf von dort aufrufen können.

+0

Ich ziele auch auf Silverlight, also kann ich native Funktionen nicht aufrufen. – Hali

4

Ich glaube, Sie dies wünschen: http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx

Es ist eine freie Implementierung von einem Hafen der C printf Funktion in C#. Sie sollten beachten, dass der Autor darauf hinweist, dass nicht alle Funktionen von printf derzeit unterstützt werden - aber dies kann ein guter Ausgangspunkt sein.

EDIT: Ich sehe, dass die Lizenz für diese Version ist nicht kompatibel mit dem, was Sie brauchen - in diesem Fall empfehle ich auf jeden Fall den Aufruf der nicht verwalteten Version direkt als der folgende Blog-Artikel diskutiert. Es ist wahrscheinlich die kompatibelste und sicherste Sache zu tun.

Wenn das nicht schneiden, hier ist ein Blog-Artikel über tatsächlich den Aufruf der unmanaged printf Funktion:

http://community.bartdesmet.net/blogs/bart/archive/2006/09/28/4473.aspx

Es sieht wie folgt aus ist alles, was Sie den nicht verwalteten printf anrufen müssen aus C#:

[DllImport("msvcrt40.dll")] 
public static extern int printf(string format, __arglist); 

static void Main(string[] args) 
{ 
    printf("Hello %s!\n", __arglist("Bart")); 
} 
+0

Beachten Sie, dass die Eingabe von __arglist in VS2008/2010 die IDE zum Absturz bringen kann. MS wird nicht bis zur nächsten Hauptversion repariert ... – leppie

+0

Danke, aber ich ziele auch auf Silverlight, also kann ich native Funktionen nicht aufrufen. – Hali

4

Warum Sie keine GPL-kompatible Implementierung von printf finden geschrieben in C und Port es zu .NET?

+0

Wenn LGPL gut genug ist, ist der Quellcode der glibc hier: http://ftp.gnu.org/gnu/glibc/ - stdio-common enthält die printf.c, die die Funktion vprintf in vfprintf.c aufruft. Pretty hairy code though ... –

+0

Absolut, um diese Idee insgesamt nicht auszuschließen, aber die paar Implementierungen, die ich in den Tagen gesehen habe, waren mehr als ungeeignet, um nach C# portiert zu werden - na ja, zumindest wenn man sich um Code kümmert; -) Es könnte auch einfacher sein, eine existierende Test-Suite zu finden und irgendwie dagegen von vorne zu programmieren. –

Verwandte Themen