Show
Cùng tìm hiểu về cách ghi file trong C. Bạn sẽ học được cách ghi file trong C bằng 3 hàm có sẵn là fputc, fputs, và fprintf sau bài học này. Chúng ta có 3 phương pháp để ghi file trong C như sau:
Bài viết này sẽ chú trọng về cách Ghi file trong C. Về quy trình tổng quát xử lý file trong C, hãy tham khảo tại bài sau:
Trước khi ghi file trong CĐể ghi file trong C, bạn cần phải mở nó trước bằng một trong hai hàm ghi file là fopen hoặc fopen_s mà Kiyoshi đã hướng dẫn trong bài Mở file trong C. Lưu ý là tùy thuộc vào mục đích của việc ghi file mà mode dùng để mở file cũng sẽ khác nhau, do vậy chúng ta cần hết sức chú ý khi lựa chọn mode khi mở file. Ở đây, mode ghi file chính là thông tin về những việc cần làm với một file. Các mode có thể dùng để ghi file trong C như sau:
Ví dụ, nếu bạn chỉ muốn mở để ghi đè file, hãy dùng tới mode w như sau: FILE * fp = NULL; Hoặc nếu bạn muốn mở để ghi chèn file, hãy dùng tới mode a như sau: FILE * fp = NULL; Tuy nhiên nếu bạn muốn mở file và để vừa ghi và vừa ghi đè file đó, lúc này mode cần dùng để mở file không phải là mode w, mà sẽ là mode r+ chẳng hạn. FILE * fp = NULL; Chi tiết về các mode ghi file cũng được trình bày đầy đủ trong bài Mở file trong C. Sau khi đã mở file thành công bằng một trong hai hàm trên, lúc này chúng ta đã có thể tiến hành ghi dữ liệu vào file trong c với các phương pháp sau đây. Ghi ký tự vào file bằng hàm fputcHàm fputc trong C là một hàm có sẵn trong thư viện chuẩn, có tác dụng ghi từng ký tự vào file chỉ định. Tên hàm fputc được viết tắt bởi cụm từ file, put và character, được dịch theo tiếng Việt chính xác là hàm ghi từng ký tự vào file. Chúng ta sử dụng hàm fputc trong C với cú pháp sau đây: int fputc(int char, FILE * fp); Trong đó:
Hàm fputc sẽ trả về ký tự đã được ghi vào file. Trong trường việc ghi file thất bại thì giá trị EOF sẽ được trả về. Ví dụ cụ thể, chúng ta sẽ ghi dòng text Hello vào file trống sample.txt. Chúng ta sẽ dùng hàm fopen để mở file, sau đó ghi từng ký tự có trong dòng nội dung này vào file bằng hàm fputc như sau: #include <stdio.h> Kết quả, các ký tự trong chuỗi sẽ được lần lượt ghi vào file sample.txt như sau: Hello Ghi chuỗi vào file trong C bằng hàm fputsHàm fputs trong CViệc ghi từng ký tự vào file bằng hàm fputc thật là vất vả phải không nào? Đó là lý do mà hàm fputs với chức năng ghi chuỗi vào file đã được ra đời. Hàm fputs trong C là một hàm có sẵn trong thư viện chuẩn, có tác dụng ghi từng chuỗi vào file chỉ định. Tên hàm fputs được viết tắt bởi cụm từ file, put và string, được dịch theo tiếng Việt chính xác là hàm ghi chuỗi vào file. Chúng ta sử dụng hàm fputs trong C với cú pháp sau đây: int fputs(const char * str, FILE * fp); Trong đó:
Hàm fputs sẽ trả về 0 nếu việc ghi chuỗi vào file thành cônt. Trong trường hợp việc ghi file thất bại thì EOF sẽ được trả về. Lưu ý là hàm fputs không tự động ghi ký tự xuống dòng Ví dụ dùng hàm fputs để ghi chuỗi vào file trong CVí dụ cụ thể, chúng ta sẽ ghi nội dung sau vào file trống Hello.txt. Hello World! I am Kiyoshi Chúng ta sẽ dùng hàm fopen để mở file, sau đó ghi các chuỗi này vào file bằng hàm fputs như sau: #include <stdio.h> Kết quả, chuỗi chỉ định sẽ được lần lượt ghi vào file sample.txt như sau: Hello World! Ghi dữ liệu vào file trong C theo định dạng bằng hàm fprintfHàm fprintf trong C là gìHàm fprintf trong C là một hàm có sẵn trong thư viện chuẩn, có tác dụng ghi dữ liệu vào file theo định dạng chỉ định. Bằng cách sử dụng hàm fprintf, chúng ta có thể định dạng các dữ liệu thuộc nhiều kiểu khác nhau, và sau đó ghi chúng vào các file có định dạng cố định như file CSV, JSON chẳng hạn. Chúng ta sử dụng hàm fprintf trong C với cú pháp sau đây: int fprintf(fp, “fo1 fo2 fo3 … “, var1, var2, var3 …); Trong đó
Cơ chế hoạt động của hàm fprintf là lấy dữ liệu từ biến Hàm fprintf sẽ trả về một số thuộc kiểu int, chính là số ký tự có trong chuỗi được tạo. Trong trường hợp việc ghi file thất bại thì giá trị EOF sẽ được trả về. Định dạng dữ liệu sử dụng trong hàm fprintfĐịnh dạng (format) của dữ liệu cần ghi cũng như kiểu của biến lưu dữ liệu được tóm tắt trong bảng dưới đây:
Ví dụ ghi dữ liệu vào file trong CGiả sử chúng ta có các kiểu thông tin như [chuỗi], [ký tự] và [số] được lưu vào các biến tương ứng. Bằng cách sử dụng hàm fprintf, chúng ta có thể định dạng các thông tin này và ghi vào file như chương trình sau đây: #include <stdio.h> Kết quả, các dữ liệu với định dạng chỉ định sẽ được vào file Hello.txt như sau: Kiyoshi M 30 Giống như thế, các kiểu thông tin như [chuỗi], [ký tự] và [số] sẽ được ghi theo định dạng chỉ định vào file. Ghi mảng vào file trong cỨng dụng hàm fprintf, chúng ta có thể thực hiện ghi mảng vào file trong c. Do các phần tử trong mảng C đều có cùng kiểu dữ liệu, nên chúng ta có thể chỉ định cùng kiểu định dạng để ghi các phần tử từ mảng vào file bằng hàm hàm fprintf. Ví dụ cụ thể: #include <stdio.h> Kết quả, nội dung mảng sẽ được ghi vào file như sau: 10 20 44 60 82 Một cách tương tự thì chúng ta cũng có thể ghi các mảng 2 chiều vào file trong C. Khi đó mỗi mảng con 1 chiều trong mảng 2 chiều sẽ được coi như một dòng để ghi vào file, và chúng ta cần phải thêm ký tự xuống dòng #include <stdio.h> Kết quả, từng dòng sẽ được ghi vào file như sau: Toan: 7 Van: 9 Anh: 8
Ghi cấu trúc vào file trong cỨng dụng hàm fprintf, chúng ta có thể thực hiện ghi cấu trúc vào file trong c. Do các thành viên trong cấu trúc C có thể có kiểu dữ liệu khác nhau, nên chúng ta cần chỉ định kiểu định dạng phù hợp cho từng thành viên để ghi giá trị của chúng từ mảng vào file bằng hàm hàm fprintf. Ví dụ chúng ta ghi dữ liệu từ mảng cấu trúc vào file trong C bằng hàm fprintf như sau: #include <stdio.h> Kết quả, nội dung mảng cấu trúc sẽ được ghi vào file như sau: name sex age height weight
Ghi file CSV trong CỞ phần trên, chúng ta đã tiến hành ghi nội dung các kiểu dữ liệu phức tạp như mảng hay cấu trúc vào file dưới dạng file txt rồi. Tuy nhiên chúng ta cũng có thể ghi dữ liệu trên vào file CSV trong C, đơn giản bằng cách thay đổi đuôi file từ .txt sang .csv là xong. Ví dụ cụ thể, chúng ta ghi dữ liệu từ mảng cấu trúc vào file CSV trong C bằng hàm fprintf như sau. Lưu ý là chúng ta cần viết định dạng các dữ liệu cách nhau bởi dấu phẩy để có thể ghi từng dữ liệu vào từng ô trong file CSV. #include <stdio.h> Kết quả, nội dung mảng cấu trúc sẽ được ghi vào file people.csv như sau: Tổng kếtTrên đây Kiyoshi đã hướng dẫn các bạn về cách ghi file trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé. Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo. Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" rel="license noopener" target="_blank" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creativecommons</a>&nbsp;và <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" target="_blank" rel="noopener" href="https://www.dmca.com/Protection/Status.aspx?ID=1631afcd-7c4a-467d-8016-402c5073e5cd" class="dmca-badge">DMCA</a><script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js"></p><h3 style="font-size:15px">Bài viết liên quan</h3><ul class="popular-posts"><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/mo-dong-file-trong-c/" title="Mở và đóng file trong C (fopen, fopen_s, fclose)" rel="bookmark">Mở và đóng file trong C (fopen, fopen_s, fclose)</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/xu-ly-file-trong-c/" title="Xử lý file trong c" rel="bookmark">Xử lý file trong c</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/doc-file-trong-c/" title="Đọc file trong C (fgetc, fgets, fscanf, sscanf)" rel="bookmark">Đọc file trong C (fgetc, fgets, fscanf, sscanf)</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/bien-trong-c/khai-bao-bien-trong-c/" title="Khai báo biến trong C" rel="bookmark">Khai báo biến trong C</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/bien-trong-c/bien-trong-c-la-gi/" title="Biến trong C là gì" rel="bookmark">Biến trong C là gì</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/bien-trong-c/khoi-tao-bien-trong-c/" title="Khởi tạo biến trong C" rel="bookmark">Khởi tạo biến trong C</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/bien-trong-c/gan-bien-trong-c/" title="Gán biến trong C" rel="bookmark">Gán biến trong C</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/cai-dat-moi-truong-lap-trinh-c-c/cai-dat-moi-truong-lap-trinh-c-voi-dev-c/" title="Cài đặt môi trường lập trình C/C++ với Dev C++" rel="bookmark">Cài đặt môi trường lập trình C/C++ với Dev C++</a></h3></div></li></ul></div><div id="keugoi"><span>Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!</span></div><section class="icon-bar-2" style="border-bottom:dotted grey .3px!important"><a target="_blank" title="chia sẻ qua facebook" rel="noopener noreferrer" href="https://www.facebook.com/sharer/sharer.php?u=https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/ghi-file-trong-c/" class="facebook"><i class="fa fa-facebook"></i></a> <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/intent/tweet?url=https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/ghi-file-trong-c/" title="chia sẻ qua twitter" class="twitter"><i class="fa fa-twitter"></i></a> <a target="_blank" rel="noopener noreferrer" href="https://getpocket.com/edit?url=https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/ghi-file-trong-c/" title="chia sẻ qua pocket" class="pocket"><i class="fa fa-get-pocket"></i></a> <span class="zalo-share-button" title="chia sẻ qua zalo" style="margin-left:18px;margin-bottom:-3px" data-href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/ghi-file-trong-c/" data-oaid="579745863508352884" data-layout="3" data-color="blue" data-customize="false"></span></section><p class="ico-folder"><a target="_blank" href="https://laptrinhcanban.com/"><span itemprop="HOME">HOME</span></a><span class="sya"></span>>> <a target="_blank" class="article-category-link" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/">lập trình c cơ bản dành cho người mới học lập trình</a>>><a target="_blank" class="article-category-link" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/">16. file trong c</a></p><nav id="article-nav"><a target="_blank" href="https://laptrinhcanban.com/c/lap-trinh-c-co-ban/file-trong-c/doc-file-trong-c/" id="article-nav-older" class="article-nav-link-wrap" style="float:left;text-align:right;padding-right:20px"><strong class="article-nav-caption">Bài sau</strong><div class="article-nav-title">Đọc file trong C (fgetc, fgets, fscanf, sscanf)</div></a><a target="_blank" href="https://laptrinhcanban.com/cpp/lap-trinh-cpp-co-ban/gioi-thieu-ngon-ngu-cpp/ngon-ngu-lap-trinh-cpp-la-gi/" id="article-nav-newer" class="article-nav-link-wrap" style="float:right;text-align:left;padding-left:20px"><strong class="article-nav-caption">Bài tiếp</strong><div class="article-nav-title">Ngôn ngữ lập trình C++ là gì</div></a><span id="ezoic-pub-ad-placeholder-611" class="ezoic-adpicker-ad"></span></nav><div id="recent_posts_down"><div class="widget_athemes_tabs"><ul id="widget-tab" class="clearfix widget-tab-nav"><li class="active">Bài viết mới nhất</li></ul><div class="widget"><ul><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban45.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-trong-php/">Tách chuỗi trong PHP (explode, preg_split)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/cat-chuoi-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban21.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/cat-chuoi-trong-php/">Cắt chuỗi trong PHP (substr, mb_substr)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-thanh-mang-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban57.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-thanh-mang-trong-php/">Tách chuỗi thành mảng trong PHP (explode)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tim-kiem-chuoi-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban43.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tim-kiem-chuoi-trong-php/">Tìm kiếm chuỗi trong PHP (strpos)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/dem-so-lan-xuat-hien-cua-ky-tu-trong-chuoi-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban52.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/dem-so-lan-xuat-hien-cua-ky-tu-trong-chuoi-php/">Đếm số lần xuất hiện của ký tự và chuỗi trong chuỗi PHP (substr_count)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/chuyen-chuoi-thanh-mang-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban47.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/chuyen-chuoi-thanh-mang-trong-php/">Chuyển chuỗi thành mảng trong PHP (str_split, mb_str_split)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-tung-ky-tu-trong-chuoi-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban47.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-tung-ky-tu-trong-chuoi-php/">Tách từng ký tự trong chuỗi PHP (substr, preg_split)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/xoa-ky-tu-trong-chuoi-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban15.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/xoa-ky-tu-trong-chuoi-php/">Xóa ký tự trong chuỗi PHP</a></span> <span>tháng 9 15, 2022</span></div></li></ul></div></div></div><footer class="entry-meta entry-footer"></footer><hr class="entry-footer-hr"></div><div id="profiletitle2">Profile</div><div id="profileblock2"><div id="profilephoto2"><a target="_blank" rel="noopener" href="https://www.facebook.com/mr.nchita"><img width="100" height="100" alt="きよしです!笑" ezimgfmt="rs rscb2 src ng ngcb2" class="ezlazyload" data-ezsrc="/css/images/kiyoshi.webp"></a></div><div id="profiletext2"><p>Tác giả : <a href="https://www.facebook.com/mr.nchita" target="_blank" rel="nofollow noopener">Kiyoshi (Chis Thanh)</a></p><p>Kiyoshi là một <a href="https://www.youtube.com/c/ChisThanh" target="_blank" rel="nofollow noopener">cựu du học sinh tại Nhật Bản</a>. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.<span id="ezoic-pub-ad-placeholder-196" class="ezoic-adpicker-ad"></span></p></div></div></div></article><aside id="sidebar"><div id="sidebar_first"><div class="search" style="margin-top:-30px"><div id="fb-root"></div><script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v12.0&appId=3084959888222500&autoLogAppEvents=1" nonce="KPkvxeh4"> |