Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Khi xuất ra màn thì phần tử cuối bị lặp.

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    9

    Question Khi xuất ra màn thì phần tử cuối bị lặp.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. typedef struct CaNhan
    5. {
    6.     char ten[30];
    7.     int tuoi;
    8. };
    9. void TaoTep(char tentep[10])
    10. {
    11.     CaNhan ng;
    12.     char c;
    13.     FILE* ptep;
    14.     ptep=fopen(tentep,"wb");
    15.     c='c';
    16.     while(1)
    17.     {
    18.         if(c!='c') break;
    19.         printf("\nCho biet ten : ");gets(ng.ten);
    20.         printf("Cho biet tuoi : ");scanf("%d%*c",&ng.tuoi);
    21.         fwrite(&ng,sizeof(CaNhan),1,ptep);
    22.         printf("Co muon nhap tiep khong ? ");c=getchar();
    23.         fflush(stdin);
    24.     }
    25.     fclose(ptep);
    26. }
    27. void RaMan(char tentep[10])
    28. {
    29.    unsigned long  age,n=0;
    30.    CaNhan p;
    31.    FILE* ptep;
    32.    ptep=fopen(tentep,"rb");
    33.    if(ptep==NULL) return;
    34.    n=fseek(ptep,0,SEEK_END);
    35.    n=ftell(ptep)/sizeof(CaNhan);
    36.    printf("\nTep tin \"%s\" chua %d ca nhan :\n\n",tentep,n);
    37.    n=1;
    38.    rewind(ptep);
    39. //nếu thay điều kiện ở đây là fread(&p,sizeof(CaNhan),1,ptep)>0 thì không bị lặp lại phần tử cuối nữa
    40.    while(!feof(ptep))  
    41.    {
    42.         fread(&p,sizeof(CaNhan),1,ptep);
    43.         printf("Nguoi thu %d : %-30s      %-2d\n",n++,p.ten,p.tuoi);
    44.    }
    45.    fclose(ptep);
    46. }
    47. void XoaTep(char tentep[10])
    48. {
    49.     printf("...removing data...\n");
    50.     remove(tentep);
    51. }
    52. void main()
    53. {
    54.     char tentep[10];
    55.     printf("Cho ten tep can tao moi : ");
    56.     gets(tentep);
    57.     FILE* ptep;
    58.     TaoTep(tentep);
    59.     RaMan(tentep);
    60.     XoaTep(tentep);
    61. }

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Vậy vấn đề là gì khi bạn đã giải quyết được rồi ?
    ttecak ?

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    20

    Cái này đã được thảo luận, bạn xem qua lại nhé :
    http://forums.congdongcviet.com/showthread.php?t=7200

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi anhdung88 Xem bài viết
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. typedef struct CaNhan
    5. {
    6.     char ten[30];
    7.     int tuoi;
    8. };
    9. void TaoTep(char tentep[10])
    10. {
    11.     CaNhan ng;
    12.     char c;
    13.     FILE* ptep;
    14.     ptep=fopen(tentep,"wb");
    15.     c='c';
    16.     while(1)
    17.     {
    18.         if(c!='c') break;
    19.         printf("\nCho biet ten : ");gets(ng.ten);
    20.         printf("Cho biet tuoi : ");scanf("%d%*c",&ng.tuoi);
    21.         fwrite(&ng,sizeof(CaNhan),1,ptep);
    22.         printf("Co muon nhap tiep khong ? ");c=getchar();
    23.         fflush(stdin);
    24.     }
    25.     fclose(ptep);
    26. }
    27. void RaMan(char tentep[10])
    28. {
    29.    unsigned long  age,n=0;
    30.    CaNhan p;
    31.    FILE* ptep;
    32.    ptep=fopen(tentep,"rb");
    33.    if(ptep==NULL) return;
    34.    n=fseek(ptep,0,SEEK_END);
    35.    n=ftell(ptep)/sizeof(CaNhan);
    36.    printf("\nTep tin \"%s\" chua %d ca nhan :\n\n",tentep,n);
    37.    n=1;
    38.    rewind(ptep);
    39. //nếu thay điều kiện ở đây là fread(&p,sizeof(CaNhan),1,ptep)>0 thì không bị lặp lại phần tử cuối nữa
    40.    while(!feof(ptep))  
    41.    {
    42.         fread(&p,sizeof(CaNhan),1,ptep);
    43.         printf("Nguoi thu %d : %-30s      %-2d\n",n++,p.ten,p.tuoi);
    44.    }
    45.    fclose(ptep);
    46. }
    47. void XoaTep(char tentep[10])
    48. {
    49.     printf("...removing data...\n");
    50.     remove(tentep);
    51. }
    52. void main()
    53. {
    54.     char tentep[10];
    55.     printf("Cho ten tep can tao moi : ");
    56.     gets(tentep);
    57.     FILE* ptep;
    58.     TaoTep(tentep);
    59.     RaMan(tentep);
    60.     XoaTep(tentep);
    61. }
    hihi,lại 1 ví dụ chứng minh việc xài hàm feof là 1 giải pháp tồi

Các đề tài tương tự

  1. Xuất 1 kiểu dữ liệu là phân số mà không cần phải gọi qua hàm xuất trong class ?
    Gửi bởi giacmo1612 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 4
    Bài viết cuối: 24-03-2012, 02:38 PM
  2. Trả lời: 0
    Bài viết cuối: 08-09-2011, 10:14 PM
  3. Bài tập C++ nhập mảng gồm n (5<n<10) phần tử, xuất mảng và xuất ra các số nguyên tố của mảng
    Gửi bởi viettan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 08-01-2011, 10:23 PM
  4. Hỏi về tần xuất xuất hiện của một phần tử trong mảng
    Gửi bởi A10932 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 01-04-2008, 05:00 PM
  5. bài toán tìm số lần xuất hiện các phần tử xuất hiện trong 1 chuỗi
    Gửi bởi tuan_anhhhh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 11-03-2008, 09:30 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn