GNU/Linux >> Belajar Linux >  >> Linux

fflush() tidak berfungsi di Linux

Jangan gunakan fflush, gunakan fungsi ini sebagai gantinya:

#include <stdio.h>
void clean_stdin(void)
{
    int c;
    do {
        c = getchar();
    } while (c != '\n' && c != EOF);
}

fflush(stdin) tergantung implementasinya, tetapi fungsi ini selalu berfungsi. Di C, penggunaan fflush(stdin) dianggap praktik yang buruk .


Perilaku fflush tidak ditentukan untuk input stream (standar online 2011):

7.21.5.2 fflush fungsi

Sinopsis

1

    #include <stdio.h>
    int fflush(FILE *stream);
Deskripsi

2 Jika aliran mengarah ke aliran keluaran atau aliran pembaruan di mana operasi terbaru tidak dimasukkan, fflush fungsi menyebabkan data tidak tertulis apa pun untuk aliran itu dikirim ke lingkungan host untuk ditulis ke file; jika tidak, perilaku tidak ditentukan.

3 Jika stream adalah pointer null, fflush fungsi melakukan tindakan pembilasan ini pada semua aliran yang perilakunya ditentukan di atas.

Pengembalian

4 fflush fungsi menyetel indikator kesalahan untuk aliran dan mengembalikan EOF jika terjadi kesalahan penulisan, jika tidak maka mengembalikan nol.

Saya menghadapi masalah yang sama saat bekerja di LINUX dan solusi alternatif dari masalah ini adalah Anda menentukan karakter boneka katakanlah char dummy; dan beri scanf() untuk memindainya tepat sebelum input Anda yang sebenarnya terjadi. Ini bekerja untuk saya. Saya harap ini juga berhasil untuk Anda.


Salah satu yang selalu berfungsi di Linux:

#include <termios.h>
#include <unistd.h>

void clean_stdin()
{
        int stdin_copy = dup(STDIN_FILENO);
        /* remove garbage from stdin */
        tcdrain(stdin_copy);
        tcflush(stdin_copy, TCIFLUSH);
        close(stdin_copy);
}

Anda dapat menggunakan tcdrain dan tcflush tidak hanya untuk in/out/err fd.


Linux
  1. Linux – Mengapa Usb Tidak Berfungsi Di Linux Saat Berfungsi Di UEFA/bios?

  2. Linux – Caps Lock Led Tidak Bekerja di Konsol Linux?

  3. Suara Ubuntu Linux 19.10 Di Hp Pavilion Aio Tidak Berfungsi?

  1. Di mana fungsi itoa di Linux?

  2. PYTHONPATH tidak berfungsi untuk sudo di GNU/Linux (berfungsi untuk root)

  3. Nightmare.js tidak berfungsi seperti yang diharapkan di server cloud Ubuntu Linux

  1. Perintah Linux 'akan' tidak berfungsi

  2. linux date -s perintah tidak berfungsi untuk mengubah tanggal di server

  3. caps lock led tidak berfungsi di konsol Linux