Saya memiliki program berikut:
int main(int argc, char *argv[])
{
int a, b;
char c1, c2;
printf("Enter something: ");
scanf("%d",&a); // line 1
printf("Enter other something: ");
scanf("%d", &b); // line 2
printf("Enter a char: ");
scanf("%c",&c1); // line 3
printf("Enter another char: ");
scanf("%c", &c2); // line 4
printf("Done"); // line 5
system("PAUSE");
return 0;
}
Seperti yang saya baca di buku C, penulis mengatakan bahwa scanf()
meninggalkan karakter baris baru di buffer, oleh karena itu, program tidak berhenti di baris 4 bagi pengguna untuk memasukkan data, melainkan menyimpan karakter baris baru di c2 dan berpindah ke baris 5.
Apakah itu benar?
Namun, apakah ini hanya terjadi dengan char
tipe data? Karena saya tidak melihat masalah ini dengan int
tipe data seperti pada baris 1, 2, 3. Apakah benar?
fflush(stdin)
dapat digunakan sebelum panggilan kescanf()
untuk satu karakter. Harap baca Menggunakanfflush(stdin)
untuk diskusi tentang pro dan kontra serta alternatif metode tersebut (yang bekerja, kurang lebih, pada Windows, dan tidak berfungsi di sebagian besar tempat lain).