Lỗi Về Hàm Feof Trong C

  • Bài viết
  • Hỏi đáp
Tạo bài viết Đăng ký Đăng nhập Code24h.com 30/09/2018, 16:56 Lỗi về hàm feof trong c #include <stdio.h> #include <stdlib.h> #define MAX 50 //khai bao struct typedef struct{ char name[30]; int diem; }Student; int input(); FILE *f; Student *student; int main() { int size = input(); return 0; } //doc du lieu trong file vao struct va in ra man hinh int input() { if((f = fopen("bangdiem.txt","r")) == NULL){ printf("cannot open "); return; } int size = 0; while(!feof(f)){ student = (Student *)malloc(sizeof(Student)); fscanf(f,"%s%d",student->name,&student->diem); printf("%s %d ",student->name,student->diem); size++; free(student); } printf("size = %d ",size); fclose(f); return size; }

nội dung file

ledinhduy 5 levanhoang 6 tranhuuthinh 8

kết qủa in ra

ledinhhuy 5 levanthanh 6 levantan 8 8 size = 4

tại sao khi dùng feof thì nó lại bị thừa ra số 8 ở kết qủa và gía trị size trả lại lại là 4?? Mọi người sửa lỗi giúp mình và nếu có cách nào hay hơn thì chỉ cho mình với.

Minh Hoàng viết 18:59 ngày 30/09/2018

Trong C thì EOF không phải là một kí tự (non-character value). Vì vậy thằng fscanf sẽ cố đọc, thằng name gồm những ô kí tự nhưng thằng eof lại không phải kí tự nên nó không get vào name được. diem cũng sẽ cố đọc nhưng không được, nên đành lấy thằng buffer trước đó là 8 (riêng thằng diem thì mình không biết đúng không). Bạn sửa lại như sau

if (fscanf(f,"%s%d",student->name,&student->diem) == 2) { printf("%s %d\n",student->name,student->diem); }

cách này sẽ kiểm tra xem nó có đọc đủ 2 input hay không. fscanf sẽ return về số input mà nó đọc được.

viết 19:12 ngày 30/09/2018

thank bạn nha mình sửa được rồi nhưng mà còn cái đoạn " Trong C thì EOF không phải là một kí tự (non-character value). Vì vậy thằng fscanf sẽ cố đọc " đoạn này là sao bạn giai thích rõ hơn đc k và tại sao nó gặp EOF lại k dừng luôn mà lại còn đọc thêm nữa

Minh Hoàng viết 19:09 ngày 30/09/2018

tại sao nó gặp EOF lại k dừng luôn mà lại còn đọc thêm nữa

Có thể đó là một tính năng mình cũng không biết chắc, nhờ cao thủ vào xử lí thôi

Bình luận về bài viết này Chia sẻ tin đăng đến bạn bè Gửi Messenger Copy link Bài liên quan

0 chủ đề

0 bài viết

Tác giả nổi bật
  • Son Dong
  • Hoa Nguyen
  • Pham Dat
  • Nguyễn Dũng
  • Đào Đăng Sơn
Từ khóa nổi bật AngularJS Blog Bootstrap C / C++ Cấu trúc dữ liệu & Giải thuật Cơ sở dữ liệu Codeigniter Công cụ lập trình CSS CSS cơ bản CSS3 Học Excel HTML HTML cơ bản HTML5 Java Javascript jQuery Json Lập trình mobile Laravel Linux MongoDB MySQL NodeJS Oracle Pascal PHP PHP cơ bản PHP nâng cao Python React Native ReactJS Ruby SEO SQL Server Swift Visual Basic VueJS WordPress XML Chủ đề nổi bật
  • 1 Cài đặt phần mềm cần thiết cho học lập trình web
  • 2 Tự Học HTML Cơ Bản Online Miễn Phí Từ A đến Z
  • 3 Seo website dành cho dân IT
  • 4 REACT NATIVE
  • 5 sdfdsf
  • 6 Lập trình di động với React Native
  • 7 Vue.js
  • 8 Kiếm thức cơ bản HTML CSS
  • 9 So sánh count() và sizeof() 2 phần tử đếm mảng
  • 10 Toán tử và biểu thức của php
0 Các chủ đề đang được quan tâm phần mềm lập trình php | lập trình web php + mysql | khóa học lập trình php | tự học lập trình php | học php cơ bản thachpham | Xosothantai | Sỉ lẻ thùng rác thông dụng tại vĩnh long, thùng rác 120L 240l giá rẻ- lh 0911.082.000 | Xổ số miền bắc | Code24h | Cho thuê phòng trọ hà nội | Cho thuê phòng trọ bình thạnh | Cho thuê phòng trọ | Cho thuê nhà trọ Đăng ký

Đăng ký nhận thông báo

Các bài học thú vị sẽ được gửi đến inbox của bạn

HỖ TRỢ HỌC VIÊN
  • Các câu hỏi thường gặp
  • Điều khoản sử dụng
  • Chính sách và quy định
  • Chính sách bảo mật thanh toán
  • Hỗ trợ học viên: [email protected]
  • Báo lỗi bảo mật: [email protected]
VỀ CODE24H
  • Giới thiệu Code24h
  • Cơ hội nghề nghiệp
  • Liên hệ với chúng tôi
HỢP TÁC VÀ LIÊN KẾT
  • Đăng ký giảng viên
  • Giải pháp e-learning
  • Chương trình đại lý
  • Chương trình Affiliate
KẾT NỐI VỚI CHÚNG TÔI
TẢI ỨNG DỤNG TRÊN ĐIỆN THOẠI

CCode 24h, code mọi lúc, mọi nơi

© Copy right 2018 - 2025

Từ khóa » Hàm Feof Trong C