30/09/2018, 23:26
[C] Em gặp lỗi với việc nhập kiểu dữ liệu char
Hiện tại em đang học lập trình C trên hệ điều hành Linux. Đây là đoạn code của em:
int main() {
int a,b;
char c;
printf("Nhap a = ");
scanf("%d",&a);
printf("Nhap b = ");
scanf("%d", &b);
fflush(stdin);
printf("Nhap toan tu: ");
scanf("%c", &c);
printf("%d %d %c", a, b, c);
return 0;
}
Em không biết bị lỗi gì máy không báo nhưng em không nhập được dữ liệu cho thằng c. Khi chạy thì nó cho nhập a, nhập b nhưng nhập c thì bị văng ra. Em có sửa lại chỗ %c thành %s thì nhập được nhưng dữ liệu của thằng a lại bị trả về 0, em có thử với hàm fflush(stdin) nhưng vẫn ko được.
Bài liên quan
Vì
scanf("%c", &c)
là sẽ đọc ký tự như em đã biết và nó cũng sẽ đọc luôn cả ký tự newline'\n'
(nó cũng là ký tự mà :))) ). Để “handle” nó, em sẽ phải thêm 1 khoảng trắng trước%c
. Dòng code sửa thànhscanf(" %c",&c);
Tham khảo thêm: stackoverflow.com
Em cũng có thể thêm 1 cái
if
cho chắc ăn:@aliston Cảm ơn anh!! Em vừa thử viết lại đoạn code này trên windows thì lỗi này ko xảy nhưng bên linux thì bị nhưng với hướng dẫn của anh code của em đã chạy được
fflush trên linux ko hoạt động với stdin đâu.
Thay bằng hàm fpurge(stdin) nhé
Phải là __fpurge(stdin) mới đúng
Như này có được ko?
rewind(stdin) thay cho fflush() nhé, rewind hoạt đọng trên windows