2010-03-01 11 views
14

I problemi:Esiste un'implementazione gratuita di printf per .net?

Esiste un'implementazione gratuita di printf/sprintf per il framework .net? Oltre al link precedente, non ho trovato nulla.

Grazie!

Aggiornamento:

Grazie per l'aiuto, anche se non si poteva trovare nulla. Ciò significa che dovrò farlo da solo (stavo cercando di evitarlo, ma vabbè ...)
Ho preparato una funzione sprint che supporta le stringhe di formato di base, puoi trovarla qui: https://sourceforge.net/projects/printfnet/. Cercherò di renderlo una realizzazione completa se posso.

+1

Non so perché questo ha così tanti upvotes. Un'implementazione che utilizza Regex può essere eseguita probabilmente in 30-50 righe di codice banale ... – leppie

+0

Sono davvero curioso del motivo per cui è assolutamente necessario stampare ... – swilliams

+0

Perché non si può usare la licenza CPOL? Non vedo come interferisca con il tuo requisito GPL. – leppie

risposta

2

Che ne dici di un wrapper C++ gestito? Abbastanza sicuro che puoi chiamare printf da lì.

+0

Anche io scelgo come target Silverlight, quindi non posso chiamare funzioni native. – Hali

4

Penso che si desidera questo: http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx

Si tratta di un'implementazione libera di un porto della funzione C printf a C#. Dovresti essere consapevole che l'autore sottolinea che non tutte le funzionalità di printf sono attualmente supportate, ma potrebbe essere un buon punto di partenza.

EDIT: Vedo che la licenza per quella versione non è compatibile con quello che ti serve - in tal caso, ti consiglio vivamente di cercare di chiamare la versione non gestita direttamente come discute il seguente articolo del blog. È probabilmente la cosa più compatibile e più sicura da fare.

Se questo non è tagliato, ecco un articolo blog su realtà chiamare la non gestito printf funzione di:

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

Sembra che questo è tutto ciò che serve per chiamare il non gestito printf da C#:

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

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

Attenzione, digitare __arglist in VS2008/2010 può causare l'arresto anomalo dell'IDE. MS non aggiusterà la prossima versione principale ... – leppie

+0

Grazie, ma io scelgo anche Silverlight, quindi non posso chiamare funzioni native. – Hali

4

Perché non si trova un'implementazione compatibile con GPL di printf scritta in C e portarlo su .NET?

+0

Se LGPL è abbastanza buono, il codice sorgente di glibc è qui: http://ftp.gnu.org/gnu/glibc/ - stdio-common contiene printf.c che chiama la funzione vprintf in vfprintf.c. Bel codice peloso però ... –

+0

Assolutamente, per non escludere questa idea in totale, ma le due implementazioni che ho visto in quei giorni erano più che inadatte per essere convertite in C# - beh, almeno se ti interessa il codice; -) Potrebbe anche essere più facile trovare una suite di test esistente e in qualche modo programmarla da zero. –

Problemi correlati