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

Đề tài: Ghi dữ liệu lên file trong Lập trình VC++

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Post Ghi dữ liệu lên file trong Lập trình VC++

    Hai dạng file phổ biến là file văn bản và file nhị phân, trong đó dạng file nhị phân là tổng quát nhất.

    Nếu muốn ghi dữ liệu nhị phân ra file, bạn hãy tham khảo chương trình nhỏ sau đây, nó demo việc tạo file mới rồi ghi 1 chuỗi byte trong biến dữ liệu ra file thông qua việc gọi các hàm trong thư viện io.h cấp thấp (_open,_write, _read, close,...)

    Code:
     //----------------------------------
     //Chương trình này mở file để lưu dữ liệu
     //rồi lưu 1 chuỗi dữ liệu của biến buffer ra file
     //----------------------------------
     //include các file đặc tả thư viện cần dùng
     #include <io.h>
     #include <stdio.h>
     #include <stdlib.h>
     #include <fcntl.h>
     #include <sys/types.h>
     #include <sys/stat.h>
     //định nghĩa biến chứa dữ liệu cần lưu
     char buffer[] = "This is a test of '_write' function";
     //điểm nhập của ứng dụng
     void main (void) {
     int fh;
     unsigned byteswritten;
     //mở file để ghi dữ liệu nhị phân
     if((fh = _open("write.o", _O_RDWR | _O_CREAT, _S_IREAD | _S_IWRITE )) != -1) {
     //ghi dữ liệu ra file
     if((byteswritten = _write(fh, buffer, sizeof(buffer))) == -1)
     perror("Write failed");
     else
     printf("Wrote %u bytes to file\n", byteswritten);
     //đóng file
     _close (fh);
     }
     }
    Nếu muốn ghi dữ liệu văn bản ra file, bạn hãy tham khảo chương trình nhỏ sau đây, nó demo việc tạo file mới, định dạng dữ liệu cần ghi thành chuỗi văn bản rồi ghi chuỗi kết quả ra file thông qua việc gọi các hàm trong thư viện chuẩn stdio.h (fopen,fprintf, fclose,...).
    Code:
     //----------------------------------
     //Chương trình này mở file để lưu dữ liệu
     //rồi định dạng các dữ liệu cần ghi thành dạng văn bản
     //rồi lưu chuỗi văn bản ra file
     //----------------------------------
     //include các file đặc tả thư viện cần dùng
     #include <stdio.h>
     #include <process.h>
     FILE *stream;
     //điểm nhập của ứng dụng
     void main (void) {
     //định nghĩa các biến chứa dữ liệu cần lưu
     int i = 10;
     double fp = 1.5;
     char s[] = "this is a string";
     char c = '\n';
     //mở file để ghi chuỗi
     stream = fopen ("fprintf.out", "w");
     //định dạng dữ liệu thành văn bản rồi ghi kết quả
     fprintf (stream, "%s%c", s, c);
     //định dạng dữ liệu thành văn bản rồi ghi kết quả
     fprintf (stream, "%d\n", i);
     //định dạng dữ liệu thành văn bản rồi ghi kết quả
     fprintf (stream, "%f\n", fp);
     //đóng file lại
     fclose (stream);
     //gọi tiện ích type của hệ thống hiển thị nội dung file lên mà hình
     system("type fprintf.out");
     }
    Nếu muốn đọc/ghi dữ liệu vào/ra file theo trường phái hướng đối tượng, bạn hãy tham khảo chương trình nhỏ sau đây, nó demo việc dùng đối tượng ofstream trong thư viện fstream.h để tạo file mới (dạng nhị phân hay dạng văn bản đều được), rồi ghi dữ liệu của ứng dụng ra file bằng cách gởi thông diệp đến tác vụ tương ứng của đối tượng file.
    Code:
     #include <fstream.h>
     //định nghĩa kiểu dữ liệu người dùng
     struct Date {
     int mo, da, yr;
     };
     //điểm nhập ứng dụng
     void main() {
     //định nghĩa biến dữ liệu cần ghi
     Date dt = { 6, 10, 92 };
     //tạo đối tượng miêu tả file cần ghi
     ofstream tfile ("date.dat", ios::binary);
     //ghi dữ liệu bằng tác vụ write
     tfile.write ((char *)&dt, sizeof dt);
     }
    Nếu muốn đọc/ghi dữ liệu vào/ra file bằng các hàm API Windows hầu sử dụng khả năng quản lý việc dùng chung file bởi nhiều ứng dụng chạy đồng thời, bạn hãy tham khảo chương trình nhỏ sau đây, nó demo việc dùng các hàm API Windows để tạo file mới (dạng nhị phân hay dạng văn bản đều được), rồi ghi dữ liệu của ứng dụng ra file.
    Code:
     //định nghĩa kiểu dữ liệu người dùng
     struct Date {
     int mo, da, yr;
     };
     //định nghĩa các biến cần dùng
     HANDLE hFile;
     DWORD dwBytesWritten;
     //định nghĩa biến dữ liệu cần ghi
     Date dt = { 6, 10, 92 };
     //tạo file để đọc/ghi
     hFile = CreateFile("outdata.bin", // file name
     GENERIC_READ | GENERIC_WRITE, // open for read/write
     0, // do not share
     NULL, // no security
     CREATE_ALWAYS, // overwrite existing file
     FILE_ATTRIBUTE_NORMAL, // normal file
     NULL); // no attr. template
     
     //kiểm tra kết quả
     if (hFile == INVALID_HANDLE_VALUE) {
     ErrorHandler("Could not create temporary file.");
     }
     //ghi nội dung ra file
     WriteFile(hFile, &dt, sizeof(dt),
     &dwBytesWritten, NULL);
     //đóng file lại.
     CloseHandle(hFile);
    Theo PCWorld

    Cảnh cáo : Source code thì post trong thẻ [ C O D E ]; Admin cũng như mem thường. Xcross87
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 30-10-2007 lúc 10:06 PM.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

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

    anh dreaminess ơi! nếu muốn ghi một chuỗi có chứa dấu " thì làm như thế nào?
    Chẳng hạn có chuỗi như sau: i love" "you thì liệu có thể dùng buffer lưu theo kiểu như trên được ko?

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Trích dẫn Nguyên bản được gửi bởi chaien281985 Xem bài viết
    anh dreaminess ơi! nếu muốn ghi một chuỗi có chứa dấu " thì làm như thế nào?
    Chẳng hạn có chuỗi như sau: i love" "you thì liệu có thể dùng buffer lưu theo kiểu như trên được ko?
    Thêm dấu \ vào trước dấu ": Kiểu như thế này: i love\" \"you.

    Lưu ý: Không hỏi xen ngang nhé, nếu tiếp tục vi phạm sẽ không được giúp đỡ, mà bài viết sẽ bị xóa bỏ.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

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

    Code:
    #include <stdio.h>

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

    pó tay chưa học chưa biết

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

  1. Kỹ thuật C ghi nội dung lên file text trong folder share trong mạng lan
    Gửi bởi kinhkhafortoday 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: 09-11-2012, 02:25 PM
  2. Đọc dữ liệu tất cả các file txt trong một thư mục load lên web
    Gửi bởi latdat089 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 4
    Bài viết cuối: 05-06-2012, 02:17 PM
  3. Làm sao tải được file lên Listbox trong Asp.net
    Gửi bởi bvthuc190 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 30-04-2012, 10:42 PM
  4. Move file đè lên file đã có trong C#?
    Gửi bởi dotritiep trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 03-08-2011, 06:59 PM
  5. Lập trình C++ Đọc và ghi bảng băm lên file nhị phân trong C++?
    Gửi bởi johanncruyf 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: 20-03-2011, 09:32 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