2010-03-01 13 views
14

Los problemas:¿Hay una implementación gratuita de printf para .net?

¿Hay una implementación gratuita de printf/sprintf para .net framework? Aparte del enlace de arriba, no pude encontrar nada.

Gracias!

Actualización:

Gracias por la ayuda, a pesar de que no pudo encontrar nada. Eso significa que tendré que hacerlo yo mismo (estaba tratando de evitarlo, pero bueno ...)
Preparé una función sprintf que admite cadenas de formato básico, puedes encontrarla aquí: https://sourceforge.net/projects/printfnet/. Trataré de hacer una implementación completa si puedo.

+1

No sé por qué esto tiene tantos votos positivos. Una implementación usando Regex se puede hacer probablemente en 30-50 líneas de código trivial ... – leppie

+0

Tengo mucha curiosidad por qué NECESITAS imprimir ... – swilliams

+0

¿Por qué no puedes usar la licencia CPOL? No veo cómo interfiere con tu requisito de GPL. – leppie

Respuesta

2

¿Qué tal un contenedor de C++ administrado? Seguro que puedes llamar a printf desde allí.

+0

También me dirijo a Silverlight, así que no puedo llamar a funciones nativas. – Hali

4

Creo que quieres esto: http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx

Es una implementación libre de un puerto de la función C printf a C#. Debe tener en cuenta que el autor señala que no todas las características de printf son compatibles actualmente, pero este puede ser un buen punto de partida.

EDIT: Veo que la licencia para esa versión no es compatible con lo que necesita, en ese caso, definitivamente recomiendo mirar llamando a la versión no administrada directamente como se analiza en el siguiente artículo del blog. Es probablemente lo más compatible y más seguro de hacer.

Si eso no es suficiente, aquí hay un artículo en el blog sobre el hecho de llamar a la no administrado printf función:

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

Parece que esto es todo lo que necesita para llamar a la no administrado printf de C#:

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

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

Tenga en cuenta que escribir __arglist en VS2008/2010 puede bloquear el IDE. MS no lo arreglará hasta la próxima versión principal ... – leppie

+0

Gracias, pero me dirijo a Silverlight también, así que no puedo llamar a funciones nativas. – Hali

4

¿Por qué no encontrar una aplicación compatible con la GPL de printf escrita en C y llevarlo a .NET?

+0

Si LGPL es suficientemente bueno, el código fuente del glibc está aquí: http://ftp.gnu.org/gnu/glibc/ - stdio-common contiene el printf.c que llama a la función vprintf en vfprintf.c. Aunque código bastante peludo ... –

+0

Absolutamente, no para descartar esta idea en total, pero las dos implementaciones que he visto en los días eran más que inadecuadas para ser portado a C# - bueno al menos si te importa el código; -) Podría ser más fácil encontrar un conjunto de pruebas existente y, de alguna manera, programarlo desde cero. –

Cuestiones relacionadas