Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Thắc mắc về hàm fread và fwrite???

    Mã:
    #include<string.h>
    #include<conio.h>
    #include<stdio.h>
    struct VIDU
    {
    	char hoten[50];
    	char nghenghiep[50];
    };
    void main()
    {
    	FILE *f;
    	VIDU vd;
    	f = fopen("vidu.dat","wb");
    	fflush(stdin);
    	printf("Nhap ho va ten: ");
    	gets(vd.hoten);
    	fflush(stdin);
    	printf("Nhap nghe nghiep cua ban: ");
    	gets(vd.nghenghiep);
    	fwrite(&vd,sizeof(VIDU),2,f);
    	fclose(f);
    	f = fopen("vidu.dat","rb");
    	while(fread(&vd,sizeof(VIDU),1,f)> 0)
    		printf("%s - %s
    ",vd.hoten,vd.nghenghiep);
    	fclose(f);
    	getch();
    
    }
    1.fwrite(&vd,sizeof(VIDU),2,f); theo mình nghỉ là nó ghi 2 mẫu tin có kích thước sizeof(VIDU) từ vùng nhớ &vd ghi vào file f=>nó sẽ ghi lên file 2 mẫu tin mỗi mẫu tin gồm: Họ tên và nghệ nghiệp giống nhau có phải không?
    Nếu đúng là 2 mẫu tin giống nhau thì tại sao đến chỗ này:
    while(fread(&vd,sizeof(VIDU),1,f)> 0)
    printf("%s - %s
    ",vd.hoten,vd.nghenghiep);
    thì in ra lần 1 là họ tên và nghề nghiệp bạn nhập vào nhưng in ra lần 2 là một dãy ký tự lạ. Tại sao vậy?
    Tóm lại là mình không hiểu số mẫu tin nó là gì và khi nào là số 1, khi nào là số khác???
    p.s:Mình đã tìm kiếm trên diễn đàn đọc rồi mà không hiểu nên mới lập topic này.
    http://diendan.congdongcviet.com/thr...-ham-fread.cpp

  2. #2
    2 ở đây là 2 "mẫu tin" liên tiếp trên bộ nhớ, chứ ko phải là 2 bản sao.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •