Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
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. }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  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ông cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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