<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
兄弟們,上一章只介紹到了如何把單個的字元或者字串如何寫到檔案裡或者從檔案中讀取,檔案的順序讀寫後面還有幾個函數沒有介紹完,我們接著上一章繼續,給大家介紹完,圖片再拷給大家回顧回顧
1圖片如下:
這樣我們就可以把格式化的資料寫到檔案裡了。
程式碼如下:
#include<stdio.h> struct S { char arr[10]; int num; float sc; }; int main() { struct S s = { "abcdef",20,5.5f }; FILE* pf = fopen("test.dayta", "w"); if (NULL == pf) { return 1; } //寫檔案 fprintf(pf, "%s %d %f", s.arr, s.num, s.sc);//這就是如何把格式化的資料寫到檔案裡 //關閉檔案 fclose(pf); pf = NULL; return 0; }
這樣我們就可以從檔案裡讀取格式化的資料了。
程式碼如下:
#include<stdio.h> struct S { char arr[10]; int num; float sc; }; int main() { struct S s = {0}; FILE* pf = fopen("test.dayta", "r"); if (NULL == pf) { return 1; } //寫檔案 fscanf(pf, "%s %d %f", s.arr, &(s.num), &(s.sc));//這就是如何把格式化的資料寫到檔案裡 printf("%s %d %f", s.arr, s.num, s.sc); fprintf(stdout, "%s %d %f", s.arr, s.num, s.sc);//這類函數引數不同,功能就不同,可以適用於所有的流 //關閉檔案 fclose(pf); pf = NULL; return 0; }
以二進位制的方式把資料寫到檔案裡
程式碼如下:
struct S { char arr[10]; int num; float sc; }; int main() { struct S s = {"abcdef",20,5.5f}; FILE* pf = fopen("test.dayta", "w"); if (NULL == pf) { return 1; } //寫檔案 fwrite(&s, sizeof(struct S), 1, pf); //關閉檔案 fclose(pf); pf = NULL; return 0; }
以二進位制的方式從檔案裡讀取資料
程式碼如下:
#include<stdio.h> struct S { char arr[10]; int num; float sc; }; int main() { struct S s = {0}; FILE* pf = fopen("test.dayta", "r"); if (NULL == pf) { return 1; } //寫檔案 fread(&s, sizeof(struct S), 1, pf); printf("%s %d %f", s.arr, &(s.num), &(s.sc)); //關閉檔案 fclose(pf); pf = NULL; return 0; }
scanf — 針對標準輸入的格式化的輸入語句—stdin
fscanf — 針對所有輸入流的格式化的輸入語句 — stdin/檔案
sscanf — 從一個字串中讀取一個格式化的資料
printf — 針對標準輸出的格式化語句 — stdout
fprintf — 針對所有輸出流的格式化輸出語句 — stdout/檔案
sprintf — 把一個格式化的資料,轉換成字串
fseek函數:根據檔案指標的位置和偏移量來定位檔案指標。
程式碼如下:
#include<stdio.h> int main() { FILE* pf = fopen("test.data", "r"); if (NULL == pf) { perror("main"); return 1; } //讀取檔案 int ch = fgetc(pf); printf("%cn", ch); //調整檔案 fseek(pf, 2, SEEK_END); int ch = fgetc(pf); printf("%cn", ch); //關閉檔案 fclose(pf); pf = NULL; return 0; }
ftell函數:返回檔案指標相對於起始位置的偏移量(告知偏移量是多少)
rewind函數:讓檔案指標的位置回到檔案的起始位置
feof(檔案結束返回非0)
feof應用於當檔案讀取結束的時候,判斷是讀取失敗結束,還是遇檔案尾結束
fgetc函數在讀取結束的時候,會返回EOF,正常讀取的時候,返回的是讀取到的字元ASCII碼值
fgets函數在讀取結束的時候返回NULL,正常讀取的時候返回存放字串的空間起始地址。
fread函數在讀取的時候,返回的是實際讀取到的完整元素的個數。如果發現讀取到的元素個數小於指定的元素個數,這就是最後一次讀取了。
寫程式碼test.txt檔案拷貝一份,生成test2,txt
#include<stdio.h> int main() { FILE* pfread = fopen("test.txt", "r"); if (NULL == pfread) { return 1; } FILE* pfwrite = fopen("test2.txt", "w"); { if (pfread == NULL) { fclose(pfread); pfread = NULL; return 1; } //檔案開啟成功 //讀寫檔案 int ch = 0; while((ch = fgetc(pfread))!= EOF) { //寫檔案 fputc(ch, pfwrite); } } //關閉檔案 fclose(pfwrite); pfwrite = NULL; return 0; }
綜合兩篇文章簡單的介紹了什麼是檔案,檔案的使用和操作方法,學會檔案的使用讓我們能更進一步加深對程式設計的瞭解,相信大家都學會了。如果上述文章有任何問題 ,歡迎大佬們提出質疑,我會虛心學習和改正,最重要的是能共同進步,共同成長,學習好程式設計。
到此這篇關於C語言超詳細檔案操作基礎下篇的文章就介紹到這了,更多相關C語言 檔案操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45