01/10/2018, 01:07
Đọc eof trong C thì làm sao ạ?
Input : Cho một số lượng không định trước tên của các bạn trong lớp.
Output : Ghi ngược lại từng tên một.
em dùng fgets(Name,20,stdin) trong vòng lặp while mà bị lặp không giới hạn.
do{
fgets(Name,20,stdin);
} (while Name!=" ");
Khắc phục như thế nào ạ ?
Bài liên quan





Bạn đã hiểu sai về cách làm việc với chuỗi và hàm
fgetscủa C rồi. BiếnNamechứa địa chỉ bắt đầu của chuỗi, không phải ký tự (*Namemới là ký tự tại địa chỉ đó). Mà địa chỉ củaNameluôn không bằng với ký tự" "nên nó lặp mãi mãi.Hàm
char *fgets(char *s, int size, FILE *stream)sẽ đọc với số ký tự trongstreamnhỏ hơn hoặc bằngsizerồi lưu trữ tất cả ký tự đọc được vào buffersvà thêm ký tự NULL vào cuối chuỗi. Khi bạn dùng vớistdinthì nó sẽ đọc luôn ký tự newline (khi bạn ấn enter kết thúc nhập chuỗi).Nếu bài tập không yêu cầu phải đúng thứ tự của các tên nhập vào thì bạn dùng vòng lặp for để tiến lùi là được.
Có thể sửa lại thành:
em cảm ơn anh nhiều . Đúng là cao nhân