30/09/2018, 20:33

Bị bỏ qua ký tự trong vòng lặp khi dùng scanf

Mọi người cho em hỏi tại sao khi chạy mình nhập một ký tự màn hình xuất ra mã ascii , tiếp vòng lặp như vậy nó không thực hiện được lệnh scanf mà xuất ra luôn giá trị là 10 ạ?

lùi đầu dòng bằng 4 dấu cách

#include <stdio.h>
#include <conio.h>
void main()
{
	char c;

	do
	{
		printf("
Nhap ky tu :  ");
		scanf("%c", &c);

		printf("
Ma asscii là : %d", c);
	} while (c !='0');
}
Pham Van Hai viết 22:40 ngày 30/09/2018

Bạn tham khảo link dưới đây:

Hi bạn, Do tất cả dữ liệu khi nhập vào máy tính sẽ được lưu trước trong vùng nhớ đệm stdin sau đó mới truyền giá trị vào cho từng biến thông qua lệnh gán scanf. Trong trường hợp bạn nhập dư dữ liệu, các giá trị còn tồn trên stdin sẽ được chuyển tiếp cho các lệnh gán tiếp theo. Đặc biệt, mỗi lần kết thúc lệnh nhập của bạn bằng phím enter đều lưu trên vùng nhớ đệm dưới dạng kí tự \n. Đối với kiểu số nguyên %d , lệnh scanf chỉ tra các giá trị có kiểu số nguyên nên sẽ bỏ qua kí tự \n. Do vậy,…

Võ Công Tài viết 22:49 ngày 30/09/2018

tks nhiều ạ

Bài liên quan
0