01/10/2018, 17:41
Sự khác nhau giữa space và enter khi sử dụng scanf để nhập dữ liệu
Chào mọi người. Mình là newbie. Mình muốn hỏi một chút về hàm scanf trong đoạn code sau :
int main() {
int itong = 0;
int isoNhapvao;
printf("Hay nhap vao 1 day so nguyen :
");
for (int idem = 0; isoNhapvao != 0; idem++)
{
scanf("%d",&isoNhapvao);
if (isoNhapvao >= 0)
itong = itong + isoNhapvao;
}
printf("Tong cac so nguyen duong trong day so tren = : %d",itong);
return 0;
}
Trong quá trình nhập vào các số nguyên, nếu sử dụng dấu cách giữa các số nhập vào thì tới số 0 vòng lặp vẫn chưa kết thúc, ngược lại nếu sử dụng enter thì chương trình chạy như ý muốn. Vậy sự khác nhau giữa space và enter ở trường hợp này như thế nào?
P/s : Lần đầu lập topic, có gì chưa đúng mong mod nhắc nhở. Mình cảm ơn!
Bài liên quan
Bạn thử tham khảo cái này xem:
scanf reading "Enter" key
Topic của bạn ok rồi! Miễn là không nhờ giúp làm bài tập là được!
Cám ơn bạn. Mình đã search và đọc bài này trên stackoverflow trước khi hỏi trên diễn đàn. Tuy nhiên mình bị vướng một số cái như sau :
If you want the same effect while getting whitespace, change it to a %c and remove the newline escape character at the print statement."
Theo mình hiểu đoạn này thì scanf bỏ qua cả enter (which mean newline), nếu thay
%s bằng
%c thì được. Nhưng ở đây mình muốn nhập vào biến kiểu int `%d và khi mình dùng enter trong bài của mình thì vòng lặp vẫn ok - kết thúc khi nhập vào 0 và enter. Nhưng nếu nhập vào 0 và dùng whitespace thì vòng lặp không kết thúc. Ý mình hỏi ở điểm này. Mong được giải thích thêm.Vẫn dừng ngon mà nhỉ. https://repl.it/repls/EllipticalImperfectType
Có được đâu bạn ơi. Mình ấn run thì vẫn thế mà
Vậy thì phải xài non-standard và tự parse:
getch()
bên conio. Parse cả backspace nữa.