• Giga@hdv-tech.com
  • Dịch vụ trực tuyến 24H:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, Đọc và Viết tài liệu

    Thời gian đăng bài: Aug-11-2023

    Mô tả cách lập trình viên C tạo, mở và đóng tệp văn bản hoặc tệp nhị phân.

    Tệp, có nghĩa là một chuỗi byte, cho dù đó là tệp văn bản hay tệp nhị phân, Ngôn ngữ C, không chỉ cung cấp quyền truy cập vào các chức năng cấp cao nhất mà còn cung cấp lệnh gọi (OS) cơ bản để xử lý tệp trên thiết bị lưu trữ .Chương này sẽ giải thích các cuộc gọi quan trọng trong quản lý tài liệu.

    tập tin mở

    Thông thường sử dụng hàm fopen() để tạo tệp mới hoặc mở tệp đã có, lệnh gọi này khởi tạo một đối tượng kiểu FILE chứa tất cả các thông tin cần thiết để điều khiển luồng.Đây là nguyên mẫu của lệnh gọi hàm này:

    TỆP *fopen ( const char * tên tệp, const char * mode );

    Ở đây tên tệp là một chuỗi để đặt tên tệp, giá trị của chế độ truy cập có thể là một trong các giá trị sau:

    mẫu

    Sự miêu tả

    r

    Mở một tệp văn bản hiện có cho phép đọc nó.

    w

    Mở một tệp văn bản cho phép ghi vào tệp.Nếu tệp không tồn tại, một tệp mới sẽ được tạo.Ở đây, chương trình của bạn viết nội dung từ đầu tệp.Nếu tệp tồn tại, nó sẽ bị cắt bớt độ dài bằng 0 và được ghi lại.

    a

    Mở tệp văn bản và ghi vào tệp ở chế độ chắp thêm.Nếu tệp không tồn tại, một tệp mới sẽ được tạo.Tại đây, chương trình của bạn sẽ nối thêm nội dung vào các tệp bạn đã có.

    r+

    Mở một tệp văn bản cho phép bạn đọc và ghi tệp.

    w+

    Mở một tệp văn bản cho phép bạn đọc và ghi tệp.Nếu tệp đã tồn tại, tệp sẽ bị cắt bớt độ dài bằng 0 và nếu tệp không tồn tại, tệp mới sẽ được tạo.

    a+

    Mở một tệp văn bản cho phép bạn đọc và ghi tệp.Nếu tệp không tồn tại, một tệp mới sẽ được tạo.Quá trình đọc bắt đầu ở phần đầu của tệp và quá trình ghi chỉ ở chế độ chắp thêm.

    Nếu tệp nhị phân được xử lý, hãy sử dụng chế độ truy cập sau để thay thế ở trên:

    "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

    tập tin đã đóng

    Để đóng tệp, vui lòng sử dụng hàm fclose().Nguyên mẫu của hàm như sau:

    int fclose ( TỆP * fp );

    • Nếu đóng tệp thành công, hàm fclose() trả về 0 và nếu lỗi trả về EOF.Trên thực tế, chức năng này xóa dữ liệu khỏi bộ đệm, đóng tệp và giải phóng tất cả bộ nhớ được sử dụng cho tệp đó.EOF là hằng số được xác định trong tệp tiêu đề stdio.h

    Thư viện chuẩn C cung cấp các chức năng khác nhau để đọc và ghi tệp theo ký tự hoặc dưới dạng chuỗi có độ dài cố định.

    Ghi vào tập tin

    Dưới đây là các chức năng đơn giản nhất để ghi các ký tự vào luồng:

    int fputc ( int c , TỆP * fp );

    Hàm fputc() ghi giá trị ký tự của tham số c vào luồng xuất mà fp trỏ tới.Nếu ghi thành công, nó sẽ trả về ký tự đã viết và EOF nếu xảy ra lỗi.Bạn có thể sử dụng hàm sau để viết một chuỗi kết thúc bằng null vào luồng:

    int fputs ( const char *s , TẬP TIN *fp );

    Hàm fputs() ghi chuỗi s vào luồng đầu ra mà fp trỏ tới.Nếu ghi thành công, nó sẽ trả về một giá trị không âm và EOF nếu xảy ra lỗi.Bạn cũng có thể sử dụng hàm int fprintf(FILE *fp, const char *format,...) ghi một chuỗi vào tệp.Hãy thử ví dụ sau:

    Lưu ý: Đảm bảo rằng bạn có sẵn một thư mục tmp, và nếu nó không tồn tại, trước tiên bạn cần tạo nó trên máy tính của mình.

    /tmp thường là một thư mục tạm thời trên hệ thống Linux.Nếu chạy trên hệ thống Windows, bạn cần sửa đổi nó thành thư mục tồn tại trong môi trường cục bộ, chẳng hạn như: C:\tmp, D:\tmp, v.v.

    tấm gương sống

    #bao gồmint main () { TẬP TIN * fp = NULL ;fp = fopen("/tmp/test.txt", "w+");fprintf (fp , "Đây là thử nghiệm cho fprintf...\n ");fputs ("Đây là thử nghiệm cho fputs...\n ", fp );fđóng (fp );}

    Khi đoạn mã trên được biên dịch và thực thi, nó sẽ tạo một tệp mới test.txt trong thư mục /tmp.Và ghi vào hai dòng bằng hai chức năng khác nhau.Hãy đọc tập tin này tiếp theo.

    Đọc tập tin

    Sau đây là chức năng đơn giản nhất để đọc một ký tự từ một tệp:

    int fgetc ( TỆP * fp );

    Hàm fgetc() đọc một ký tự từ tệp đầu vào mà fp trỏ tới.Giá trị trả về là ký tự đã đọc và EOF nếu xảy ra lỗi.Hàm sau đây cho phép bạn đọc một chuỗi từ một luồng:

    char *fgets ( char *buf , int n , TẬP TIN *fp );

    Hàm fgets() đọc n-1 ký tự từ luồng nhập do fp chỉ đạo.Nó sao chép chuỗi đã đọc vào bộ đệm buf và thêm một ký tự null vào cuối để kết thúc chuỗi.

    Nếu chức năng này gặp một ký tự dòng bị hỏng '\ n' hoặc EOF của phần cuối của tệp trước khi đọc ký tự cuối cùng, thì chỉ trả về các ký tự đã đọc, bao gồm cả ngắt dòng.Bạn cũng có thể sử dụng hàm int fscanf(FILE *fp, const char *format,...) để đọc chuỗi từ tệp nhưng nó dừng đọc khi gặp dấu cách và ngắt dòng đầu tiên.

    tấm gương sống

    #bao gồmint main () { TẬP TIN * fp = NULL ;buff char [255];fp = fopen("/tmp/test.txt", "r");fscanf (fp , "%s ", đệm );printf("1: %s \n ", buff );fgets (buff , 255, (FILE *)fp );printf("2: %s \n ", buff );fgets (buff , 255, (FILE *)fp );printf("3: %s \n ", buff );fđóng (fp );}

    Khi đoạn mã trên được biên dịch và thực thi, nó sẽ đọc các tệp được tạo trong phần trước, tạo ra các kết quả sau:

    1: Điều này 2: đang thử nghiệm cho fprintf...

    3: Đây là thử nghiệm cho fputs...

    Đầu tiên, phương thức của fscanf() chỉ đọc This .bởi vì nó bắt gặp một khoảng trắng ở phía sau.Thứ hai, gọi hàm fgets() để đọc phần còn lại cho đến cuối dòng.Cuối cùng, gọi fgets() để đọc hoàn toàn hàng thứ hai.

    Chức năng I/O nhị phân

    Hai chức năng sau đây được sử dụng cho đầu vào và đầu ra nhị phân:

    size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );

    Cả hai chức năng đều được đọc và ghi cho các khối lưu trữ - thường là các mảng hoặc cấu trúc.

    Trên đây về đọc và ghi tệp C thuộc về HDV Phoelectron Technology Ltd., một hoạt động kỹ thuật phần mềm.Và công ty cho các thiết bị liên quan đến mạng (chẳng hạn như: ACONU/ giao tiếpONU/ thông minhONU/ chất xơONU, v.v.) đã tập hợp một nhóm phần mềm hùng mạnh, để mọi khách hàng tùy chỉnh các nhu cầu riêng của những người cần nó, đồng thời giúp sản phẩm của chúng tôi thông minh và tiên tiến hơn.



    trang web