Существует ли бесплатная реализация printf для .NET?

Проблемы:

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

Существует ли бесплатная реализация printf/sprintf для платформы .NET? Кроме вышеупомянутой ссылки, я ничего не мог найти.

Спасибо!

Обновление:

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

15
задан Hali 4 March 2010 в 00:45
поделиться

3 ответа

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

2
ответ дан 1 December 2019 в 04:58
поделиться

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

4
ответ дан 1 December 2019 в 04:58
поделиться

Думаю, вам нужно следующее: http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx

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

РЕДАКТИРОВАТЬ: Я вижу, что лицензия для этой версии несовместима с тем, что вам нужно - в этом случае я определенно рекомендую обратиться к вызову неуправляемой версии напрямую, как обсуждается в следующей статье блога. Вероятно, это наиболее совместимый и безопасный вариант.

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

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

Похоже, это все, что вам нужно для вызова неуправляемого printf из C #:

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

static void Main(string[] args)
{
   printf("Hello %s!\n", __arglist("Bart"));
}
4
ответ дан 1 December 2019 в 04:58
поделиться