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 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    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,...)

    Mã:
     //----------------------------------
     //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
    ", 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,...).
    Mã:
     //----------------------------------
     //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 = '
    ';
     //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
    ", i);
     //định dạng dữ liệu thành văn bản rồi ghi kết quả
     fprintf (stream, "%f
    ", 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.
    Mã:
     #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.
    Mã:
     //đị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

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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 tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi chaien281985
    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ỏ.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    #include <stdio.h>

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    pó tay chưa học chưa biết

 

 

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
  •