Есть ли бесплатная реализация printf для .net?

Проблемы:

  • Я не могу использовать string.Format, у меня есть строки стиля стиля C;
  • Я не могу вызвать собственный printf (нет P/Invoke);
  • Я не могу использовать http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx из-за лицензии, мне нужно что-то совместимое с GPL.

Есть ли бесплатная реализация printf/sprintf для .net framework? Помимо ссылки выше, я ничего не мог найти.

Спасибо!

Update:

Спасибо за помощь, хотя вы ничего не нашли. Это означает, что я просто должен сделать это сам (я пытался избежать этого, но хорошо...)
Я приготовил функцию sprintf, которая поддерживает строки основного формата, вы можете найти здесь: https://sourceforge.net/projects/printfnet/. Я постараюсь сделать это в полной мере, если смогу.

Ответы

Ответ 1

Я думаю, вы этого хотите: http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx

Это бесплатная реализация порта C printf для функции С#. Вы должны знать, что автор указывает, что не все функции printf в настоящее время поддерживаются, но это может быть хорошей отправной точкой.

EDIT: Я вижу, что лицензия на эту версию несовместима с тем, что вам нужно - в этом случае я определенно рекомендую обратиться к неуправляемой версии напрямую, как обсуждается следующая статья в блоге. Это, вероятно, самая совместимая и безопасная вещь.

Если это не вырезано, вот статья в блоге о том, что вы вызываете неуправляемую функцию printf:

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

Похоже, это все, что вам нужно, чтобы вызвать неуправляемый printf из С#:

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

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

Ответ 2

Почему бы вам не найти совместимую с GPL реализацию printf, написанную на C, и переносить ее на .NET?

Ответ 3

Как насчет управляемой С++-оболочки? Довольно уверен, что вы можете позвонить printf оттуда.