записать () в stdout и вывод printf, не чередованный?

Самый легкий метод, вероятно, был бы методом AddRange.

Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String)

Boo.AddRange(Foo.Split(","c))
7
задан Jonathan Leffler 20 December 2016 в 23:54
поделиться

4 ответа

Printf буферизуется.

Вы можете заставить printf «очистить» свой буфер с помощью вызова fflush:

#include <stdio.h>
#define MAXLEN 256

int main() {
  int n;
  char buf[MAXLEN];
  while((n = read(0,buf,sizeof(buf))) != 0){
    printf("n: %d:",n);
    fflush(stdout); /* force it to go out */
    write(1,buf,n);
  }
  return 1;
}

В общем, буферизация printf () - это хорошо. Небуферизованный вывод, особенно для видимых консолей, требующих обновления экрана и т.п., выполняется медленно. Достаточно медленный, чтобы приложение, которое много печатает, могло быть напрямую замедлено им (особенно на платформе Windows; Linux и unix обычно менее подвержены влиянию).

Однако, Буферизация printf () укусит вас, если вы также fprintf (stderr,) - stderr намеренно не буферизуете. Как следствие, вы можете получать сообщения с пропущенными некоторыми printf () ; если вы пишете в другой дескриптор FILE , который также связан с терминалом и может быть небуферизован, убедитесь, что вы сначала явно fflush (stdout) .

20
ответ дан 6 December 2019 в 07:27
поделиться

Printf использует stdio и буферизируется. Вытолкните его, отправив изменение на "n:% d: \ n"

1
ответ дан 6 December 2019 в 07:27
поделиться

Справочная страница для fgets сообщает мне:

Не рекомендуется смешивать вызовы функций ввода из stdio библиотека с низкоуровневыми вызовами read (2) для ассоциированного дескриптора файла с входным потоком; результаты будут неопределенными и очень вероятно не то, что вы хотите.

Таким образом, лучшим решением было бы не использовать write и printf для одного и того же дескриптора.

2
ответ дан 6 December 2019 в 07:27
поделиться

Используйте fwrite (потоковую версию) вместо записи.

Обратите внимание, что, хотя это связано с файлом номер 1, это не одно и то же.

0
ответ дан 6 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: