Когда я запускаю первый код и сразу нажимаю ctrl-c, в файле не будет 45
. Но когда я запускаю второй код, я получаю 45
.Буферизация поведения stdout в c
Я не мог прийти к тому, почему это происходит в приведенном ниже коде? Если stdout
является строковым буфером, не должен выводиться после ввода символа? Что мне не хватает?
Первый код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp=stdout;
fp=fopen("myfile","w");
fprintf(fp,"%d",45);
getchar();
// return 0;
}
Второй код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp=stdout;
fprintf(fp,"%d",45);
getchar();
// return 0;
}
PS: Я использую GCC и платформы Linux.
Не обязательно. '45' может быть напечатано или не напечатано. Пожалуйста, см. Мой ответ. –