Программирование PC printf не выводит текст при выходе из программы Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


printf не выводит текст при выходе из программы Печать
Добавил(а) microsin   

Столкнулся с ошибкой при написании консольной утилиты на Raspberry Pi 4 B (ядро ARM7L): printf не выводит текст если сразу после него стоит выход из программы:

   //setbuf(stdout, NULL);
   //setvbuf(stdout, NULL, _IONBF, 0);
   
   if (NULL == fi)
   {
      printf ("Error open file %s\r", argv[1]);
      //fflush(stdout);
      return 1;
   }

Если после printf вызвать getc (ожидание ввода символа), то тогда printf выводит текст в этом случае нормально:

      printf ("Error open file %s\r", argv[1]);
      getc(stdin);

В Интернете нашел несколько советов, связанных с использованием fflush, setbuf и setvbuf [1, 2]. Вызов fflush(stdout) действительно помогает, если это не относится к моменту выхода из программы. Но для случая выхода из программы fflush не помогает.

Оказалось, что если в конце строки поставить символ \n, то проблема сразу решается:

      printf ("Error open file %s\n", argv[1]);
      return 1;

[Ссылки]

1. Why does printf not flush after the call unless a newline is in the format string? site:stackoverflow.com.
2. c stdout print without new line? site:stackoverflow.com.
3. Секреты printf.
4stdio.h: стандартные возможности ввода/вывода.

 

Добавить комментарий


Защитный код
Обновить

Top of Page