vậy bạn có thể giải thích cho mình tại sao kết thúc được ko ? với lại nếu mình chèn thêm fflush (stdin);
thì sẽ thỏa mãn khi nhập g
Lệnh scanf trong ngôn ngữ lập trình C
Bạn nên gộp các cmt kiểu như
vào 1 cmt duy nhất.
Trời ạ, bạn chỉ nhập mỗi kí tự g thì phải fflush làm gì.
Tức là thế nào? Kết thúc cái gì?
cái thêm fflush mình chèn ở code thứ 2 chỉ là để mình kiểm tra enter có được tính khi ta nhập giá trị cho biến x thôi bạn, kết thúc vòng lặp đó bạn ơi
#include<stdio.h>
void main()
{
char x;
printf("x la ");
do
scanf_s("%c", &x);
while (x == 0);
printf("....");
}
Mình debug trong Visual Studio, không hiểu vì lý do gì mà x
luôn bằng null…
Tuy nhiên, mình tìm được một câu trả lời cho bài làm của riêng bạn tại đây: https://stackoverflow.com/questions/29502486/why-is-this-statement-printed-twice-in-while-loop/29502522#29502522
Từ đó mình đưa ra code mới chạy được cho bạn như sau (đã test):
#include<stdio.h>
void main()
{
char x;
printf("x la ");
do
{
x = getchar();
fflush(stdin);//Dùng để xoá '\n' khi ấn Enter mà vẫn còn trong stdin buffer
}
while (x == 'g');
printf("....");
}
ah mình nghĩ là mình hiểu rồi, khi ta nhấn g thì ở đoạn code thứ 2 và nhấn enter thì kết thúc lần nhập dữ liệu đầu tiên của hàm scanf và thỏa mãn vòng lặp, vòng lặp được thực hiện lần thứ 2, khi này kí tự nul đã được nhập vào cho biến x dẫn đến không thỏa mãn. mấy lúc trước mình đã hiểu sai.CẢM ơn Bạn.