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
fgets
của C rồi. BiếnName
chứa địa chỉ bắt đầu của chuỗi, không phải ký tự (*Name
mới là ký tự tại địa chỉ đó). Mà địa chỉ củaName
luô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ự trongstream
nhỏ hơn hoặc bằngsize
rồi lưu trữ tất cả ký tự đọc được vào buffers
và thêm ký tự NULL vào cuối chuỗi. Khi bạn dùng vớistdin
thì 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