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

Đề tài: lưu FILE và đọc FILE trong danh sách liên kết

  1. #1
    Ngày gia nhập
    12 2009
    Bài viết
    5

    Wink lưu FILE và đọc FILE trong danh sách liên kết

    nhờ các bạn chỉ giùm cách lưu và đọc 1 file trong danh sách liên kết đôi..tức là giờ mình đang làm 1 bài tập lớn về CTGL các thao tác thêm,chèn ,sữa ,xóa,cập nhập ..thì song hết rồi nhưng còn 2 thao tác là lưu và đọc 1 file thì bí quá ko biết làm sao?

  2. #2
    Ngày gia nhập
    12 2008
    Nơi ở
    Bình Dương
    Bài viết
    114

    mình có 2 chương trình demo đọc / ghi file nhị phân cho bạn đây! hi vọng sẽ có ích cho bạn!

    WriteFile_Binary:
    PHP Code:
    //CHUONG TRINH GHI 1 DANH SACH SINH VIEN LUU VAO 1 FILE CO TEN LA: SINHVIEN.DAT

    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <string.h>

    struct sv
    {
        
    char ma[9];
        
    char ten[25];
        
    int ns;
        
    float dtb;
    };

    int nhap1sv(sv &);

    void main()
    {
        
    clrscr();
        
    FILE *f;
        
    sv x;
        
    f=fopen("d:\\tam\\sinhvien.dat","w+b");
        
    cout<<"\n **************** DANH SACH SINH VIEN ******************\n\n\n";

            while(
    1)
            {
                if(
    nhap1sv(x))
                    
    fwrite(&x,sizeof(x),1,f);
                else
                {
                    
    cout<<"\n -----------HET------------";
                    break;
                }
            }


        
    fclose(f);
    }

    int nhap1sv(sv&x)
    {
        
    cout<<"\n MSSV: ";
        
    gets(x.ma);
        if(
    strcmp(x.ma,"")==0)
        return 
    0;
        
    cout<<"\n TEN SINH VIEN: ";
        
    gets(x.ten);
        
    cout<<"\n NAM SINH: ";
        
    cin>>x.ns;
        
    cout<<"\n DIEM TRUNG BINH: ";
        
    cin>>x.dtb;
        
    cout<<"\n\n";
        return 
    1;

    ReadFile_Binary
    PHP Code:
    #include <stdio.h>
    #include <iostream.h>
    #include <string.h>
    #include <conio.h>

    struct SV {
        
    char ma[9];
        
    char hoten[24];
        
    int ns;
        
    float dtb;
    };

    #define  SIZE  sizeof(SV)

    int nhap1SV(SV &);

    void main()
    {
        
    clrscr();
        
    FILE f;
        
    SV X;
        
    fopen("d:\\tam\\SV1.dat""wb");
        while ( 
    )
        {
            
    cout << "Nhap 1 sinh vien:\n";
            if ( 
    nhap1SV(X) )
                
    fwrite( &XSIZE1f);
            else
                break;
        }
        
    fclose(f);
    }

    int nhap1SV(SV X)
    {
        
    cout << "Ma SV: ";   gets(X.ma);
        if  ( 
    strcmp(X.ma"") == )
            return 
    0;
        
    cout << "Ho ten: ";   gets(X.hoten);
        
    cout << "nam sinh: ";   cin >> X.ns;
        
    cout << "Diem TB: ";   cin >> X.dtb;
        return 
    1;


  3. #3
    Ngày gia nhập
    05 2009
    Bài viết
    5

    cảm ơn bác nhé,em cũng đang cần để xem thêm phần đọc/ghi file

  4. #4
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Demo code C++
    Nếu muốn ghi thì thay trường print ra màn hình = trường lưu file là ok
    C++ Code:
    1. #include <iostream>
    2. #include <fstream>
    3.  
    4. using namespace std;
    5.  
    6.  
    7. struct node
    8. {
    9.     int data;
    10.     node *next;
    11. } *first = NULL;
    12.  
    13. typedef struct node *list;
    14.  
    15.  
    16. // creat new list from file
    17.  
    18. int newList (const char *fileName, list& first)
    19. {
    20.     fstream _in;
    21.     int a;
    22.     _in.open (fileName, ios::in);
    23.     if (_in.good ())
    24.         cout << "Mo file thanh cong" << endl;
    25.     else
    26.         cout << "Co loi mo file" << endl;
    27.     list tmp, dt;
    28.     do
    29.     {
    30.         _in >> a;
    31.         tmp = new node();
    32.         tmp->data = a;
    33.         if (first == NULL)
    34.         {
    35.             first = tmp;
    36.             first->next = NULL;
    37.         }
    38.         else
    39.         {
    40.             dt = first;
    41.             while (dt->next != NULL)
    42.                 dt = dt->next;
    43.             dt->next = tmp;
    44.             tmp->next = NULL;
    45.         }
    46.     }while (!_in.eof ());
    47.     return 0;
    48. }
    49.  
    50. list creat (int value)
    51. {
    52.     list p = new node;
    53.     p->data = value;
    54.     p->next = NULL;
    55.     return p;
    56. }
    57.  
    58.  
    59. int newListNode (list& first, int value)
    60. {
    61.     list tmp = new node;
    62.     list dt;
    63.     tmp->data = value;
    64.     if (first == NULL)
    65.     {
    66.         first = tmp;
    67.         first->next = NULL;
    68.     }
    69.     else
    70.     {
    71.  
    72.         dt = first;
    73.         while (dt->next != NULL)
    74.             dt = dt->next;
    75.         dt->next = tmp;
    76.         tmp->next = NULL;
    77.     }
    78.     return 0;
    79. }
    80.  
    81.  
    82. void printList (list& first)
    83. {
    84.     list dt;
    85.     dt = first;
    86.     if (dt == NULL)
    87.         cout << "List rong";
    88.     else
    89.     while (dt != NULL)
    90.     {
    91.         cout << dt->data << "   ";
    92.         dt = dt->next;
    93.     }
    94.     cout << endl;
    95. }
    96.  
    97.  
    98. void addFirst (list& first, int value)
    99. {
    100.     list tmp = new node;
    101.     tmp->data = value;
    102.     if (first == NULL)
    103.     {
    104.         first = tmp;
    105.         first->next = NULL;
    106.     }
    107.     else
    108.     {
    109.         tmp->next = first;
    110.         first = tmp;
    111.     }
    112. }
    113.  
    114.  
    115. void removeFirst (list& first)
    116. {
    117.     if (first == NULL)
    118.         cout << "Khong co phan tu de xoa: " << endl;
    119.     else
    120.     {
    121.         list dt;
    122.         dt = first->next;
    123.         delete first;
    124.         first = dt;
    125.     }
    126. }
    127.  
    128. int findIndex (list& first, int value)
    129. {
    130.     int count = 0;
    131.     list dt = first;
    132.     while (dt != NULL)
    133.     {
    134.         if (dt->data == value)
    135.             return count;
    136.         count ++;
    137.         dt = dt->next;
    138.     }
    139.     return -1;
    140. }
    141. int main ()
    142. {
    143.     list first = NULL;
    144.     newList("Hung.txt", first);
    145.     printList (first);
    146.     newListNode (first, 5);
    147.     printList (first);
    148.     addFirst(first, 0);
    149.     printList (first);
    150.     removeFirst (first);
    151.     printList (first);
    152.     cout << findIndex(first, 3);
    153.     printList (first);
    154.     return 0;
    155. }

  5. #5
    Ngày gia nhập
    12 2008
    Nơi ở
    Hà Nội
    Bài viết
    374

    Bạn có thể tìm hiểu qua XML. XML rất thích hợp cho việc lưu dữ liệu có cấu trúc, với nhiều yêu cầu về metadata ( data about data ), ví dụ đơn giản là "danh sách liên kết đôi" như bạn đang cần đó, ngoài ra, dữ liệu được lưu vẫn "dễ đọc" cả về nội dung và cấu trúc, dễ thay đổi, bảo trì, ...

    Bạn có thể sử dụng thư viện ngoài như TinyXML-2 hoặc -1 cho C++, thư viện hỗ trợ sẵn UTF-8, nên sẽ hỗ trợ cả tiếng Việt :

    TinyXML-1 or TinyXML-2?

    Both parsers:

    Simple to use with similar APIs.
    DOM based parser.
    UTF-8 Unicode support. http://en.wikipedia.org/wiki/UTF-8

    Advantages of TinyXML-2

    The focus of all future dev.
    Many fewer memory allocation (1/10th to 1/100th), uses less memory (about 40% of TinyXML-1), and faster (~5x on read).
    No STL requirement.
    More modern C++, including a proper namespace.
    Proper and useful handling of whitespace

    Advantages of TinyXML-1

    Can report the location of parsing errors.
    Support for some C++ STL conventions: streams and strings
    Very mature and well debugged code base.
    Code:
    http://www.grinninglizard.com/tinyxml2/index.html

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

  1. Liệt kê danh sách các file trong cùng folder với file đang chạy ?
    Gửi bởi phucduan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 05-10-2012, 09:03 AM
  2. Lập trình C++ Chương trình đọc và ghi file Danh Sách Liên Kết Đơn của mình có gì bị lỗi ???
    Gửi bởi bknight092 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-03-2012, 09:34 PM
  3. Lập trình C++ Lưu một danh sách liên kết vào một file như thế nào?
    Gửi bởi anhtai063 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 27-02-2011, 05:05 PM
  4. Lưu file, đọc file với chương trình sử dụng danh sách liên kết như thế nào?
    Gửi bởi lake202 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 16-12-2010, 08:39 AM
  5. Đọc từ file lưu vào danh sách liên kết?
    Gửi bởi madaca123 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-08-2009, 08:20 AM

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