Đầu tiên mình xin được sửa lại code của bạn như sau:
#include <stdio.h>
int main()
{
int tuoi, lop;
char ten[10];
char hocluc[4];
char kytu;
printf("ban bao nhieu tuoi, lop may, ten gi, hoc luc gi, thich chu gi.\n");
scanf("%d %d", &tuoi, &lop);
fflush(stdin);
scanf("%s", &ten);
fflush(stdin);
scanf("%s", &hocluc);
fflush(stdin);
scanf("%c", &kytu);
printf("ban %d tuoi, lop %d, ten %s, hoc luc %s, thich chu %c", tuoi, lop, ten, hocluc, kytu);
return 0;
}
Mình xin được giải thích đơn giản về lỗi muk pạn mắc phải .Hàm scanf
lấy dữ liệu trên stdin
và bản thân nó không có khả năng để xóa ký tự \n
trên stdin
nên khi sử dụng 2 lần liên tiếp thì sẽ xảy ra hiện tượng: lệnh scanf
ở lần thứ 2 sẽ bị trôi,để khắc phục lỗi này ta đặt lệnh fflush(stdin)
sau câu lệnh scanf
lần thứ 1.Nghe có vẻ rất phức tạp nhưng mình chỉ cần bạn nhớ 1 điều đơn giản như sau:
scanf("%s", &ten);
fflush(stdin);
scanf("%s", &hocluc);
và khi sử dụng liên tiếp nhiều lệnh scanf
thì cũng làm giống như vậy.1 điều nữa mình muốn nói với bạn,trong code mình không dùng hàm gì liên quan đến stdlib.h
,vì thế mình khỏi phải khai báo nó làm gì cho mệt cả.Mình xin được kết thúc ở đây, có gì không hiểu bạn cứ hỏi.