程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言基礎文件讀寫操作,c語言基礎讀寫

C語言基礎文件讀寫操作,c語言基礎讀寫

編輯:關於C語言

C語言基礎文件讀寫操作,c語言基礎讀寫


整理了一份C語言的文件讀寫件操作代碼,測試時打開相應的注釋即可。

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <unistd.h>
  4 #include <string.h>
  5 
  6 /*
  7  * EOF: 符號常量,其值為-1.
  8  * fgets() 最多讀取int-1個字符,遇換行或EOF即返回.
  9  * fputs() 寫文件時,忽略字符串截止符'\0'.
 10  * fread()和fwrite() 數據塊讀寫,多用於結構體數組(順序存儲的結構體).
 11  * 
 12  * 函數原型:
 13  * 讀:
 14  * int fgetc(FILE *stream);
 15  * char *fgets(char *s, int size, FILE *stream);
 16  * size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
 17  * int fscanf(FILE *stream, const char *format, ...);
 18  * 寫:
 19  * int fputc(int c, FILE *stream);
 20  * int fputs(const char *s, FILE *stream);
 21  * size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
 22  * int fprintf(FILE *stream, const char *format, ...);
 23  * 其他:
 24  * void rewind(FILE *stream); 將文件內部的位置指針重新指向一個流(數據流/文件)的開頭.
 25  *
 26  * 打開方式:
 27  * r(read): 讀
 28  * w(write): 寫
 29  * a(append): 追加
 30  * +: 讀和寫
 31  * t(text): 文本文件,可省略不寫
 32  * b(banary): 二進制文件
 33  */
 34 
 35 FILE *fp = NULL;
 36 
 37 // READ
 38 void GetCharFromFile(FILE *fp)
 39 {
 40     int ch = 0;
 41     
 42     while ((ch=fgetc(fp)) != EOF)    //失敗時返回 EOF
 43     {
 44         printf("fget: [%c]\n", ch);
 45     }
 46 }
 47 
 48 void GetLineFromFile(FILE *fp)
 49 {
 50     char line[1024] = "";
 51     
 52     while (fgets(line, sizeof(line), fp) != NULL)    //失敗時返回 NULL
 53     {
 54         printf("fgets: [%s]\n", line);
 55     }
 56 }
 57 
 58 void GetBlockFromFile(FILE *fp)
 59 {
 60     int i = 0;
 61     int block[10] = {0};
 62     int count = 1;
 63 
 64     while (fread(block, sizeof(block), count, fp) == count)    //失敗時返回值 != count
 65     {
 66         printf("fread: ");
 67         for (i=0; i<10; i++)
 68         {
 69             printf("%d ", block[i]);
 70         }
 71         printf("\n");
 72     }
 73 }
 74 
 75 void ReadFormatToFile(FILE *fp)
 76 {
 77     char file[32] = "";
 78     char func[32] = "";
 79     char date[32] = "";
 80     int  line = 0;
 81     
 82     fscanf(fp, "%s %s %d %[^\n]", file, func, &line, date);    //返回讀取元素個數,eg:4
 83     printf("file: %s\n", file);
 84     printf("func: %s\n", func);
 85     printf("line: %d\n", line);
 86     printf("date: %s\n", date);
 87 }
 88 
 89 // WRITE
 90 int WriteCharToFile(FILE *fp, char ch)
 91 {
 92     int ret = 0;
 93     
 94     ret = fputc(ch,fp);            //失敗時返回EOF
 95     return ret!=EOF?0:-1;
 96 }
 97 
 98 int WriteStrToFile(FILE *fp, char *str)
 99 {
100     int ret = 0;
101     
102     ret = fputs(str, fp);
103     return ret!=EOF?0:-1;        //失敗時返回EOF
104 }
105 
106 int WriteBlockToFile(FILE *fp, const void *block, int size, int count)
107 {
108     int ret = 0;
109     
110     ret = fwrite(block, size, count, fp);    //失敗時返回值 != count
111     return ret!=count?-1:0;
112 }
113 
114 int WriteFormatToFile(FILE *fp)
115 {
116     int ret = 0;
117     
118     ret = fprintf(fp, "%s %s %d %s\n", __FILE__, __func__, __LINE__, __DATE__);
119     return ret<0?-1:0;            //失敗時返回一個負值
120 }
121 
122 // MAIN 
123 int main(int argc, char **argv)
124 {
125     char ch = 'r';
126     char *str = "Hello World.\n";
127     int block[10] = {1,2,3,4,5,6,7,8,9,0};
128     char *filePath = "./ll";
129     
130     fp = fopen(filePath, "w+");        //不關心文件存在與否,每次重寫文件,並可讀
131     if (NULL == fp)
132     {
133         perror("fopen");
134         return -1;
135     }
136     
137     // WRITE
138     // printf("WriteCharToFile: %s\n", WriteCharToFile(fp, ch)?"Fail":"Success");
139     printf("WriteStrToFile: %s\n", WriteStrToFile(fp, str)?"Fail":"Success");
140     // printf("WriteBlockToFile: %s\n", WriteBlockToFile(fp, block, sizeof(block), 1)?"Fail":"Success");
141     // printf("WriteFormatToFile: %s\n", WriteFormatToFile(fp)?"Fail":"Success");
142     
143     rewind(fp);
144     // READ
145     // GetCharFromFile(fp);
146     GetLineFromFile(fp);
147     // GetBlockFromFile(fp);
148     // ReadFormatToFile(fp);
149 
150     fclose(fp);
151     return 0;
152 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved