Linux C 文件操作

来源:互联网 发布:收快递的软件 编辑:程序博客网 时间:2024/06/05 20:46

1、文件打开关闭

              FILE *fp;

              fp = fopen("./test.txt", 'r');

              fclose(fp);

2、读写单个字符

             fputc(buffer_write[index], fp);  //写什么;写到哪里去

             data = fgetc(fp);  

3、读写字符串

             fputs(buffer_write, fp);  

             fgets(buffer_read, 128, fp);  //读到哪里去;想读多少个;从哪里读

4、读写数据块

             fwrite(buffer_write, sizeof(char), strlen(buffer_write), fp);  //写什么;每个数据大小;想要写入的数据量;写到哪里去

             fread(buffer_read, sizeof(char), 128, fp);  //读到哪里去;每个数据大小;想要读多少个;从哪里读

5、文件指针位置

           A - 函数ftell() 返回文件指针的位置

             int file_offest = 0; 

             file_offest = ftell(fp);

             函数原型:long int ftell(FILE *fp);

          B - 函数fseek() 控制文件指针到任意位置

              函数原型:int fseek(FILE *fptr, long off, int whence);  //所要操作的文件指针;偏移量; 基地址(SEEK_SET开头, SEEK_CUR当前, SEEK_END结尾)

              例:fseek(fp, 0, SEEK_SET);  回到文件起始位置 


代码1

  1 #include <stdio.h>  2 #include <string.h>  3   4 int main(int argc, char *argv[])  5 {  6         FILE *fp = NULL;  7         int index, res;  8         int data;  9         char *temp_write = "First\nMiddle\nLast\n"; 10  11         fp = fopen("./test.txt", "w");  //不明白 “rw”就无法写入,可能分先后顺序。先写,所以 w 在前 12         if(fp == NULL) 13         { 14                 printf("ERROR: file opening failed! \n"); 15                 return -1; 16         } 17         printf("File opening success. \n"); 18  19         // 写:fputc() 20         for(index = 0; index <= strlen(temp_write); index++) 21         { 22                 // 函数原型:int fputc(int data, FILE *fptr); 23                 fputc(temp_write[index], fp);  // parameter: 写什么;写到哪里去 24                 printf("%d / %d: %c\n", index, strlen(temp_write), temp_write[index]); 25         } 26         fclose(fp); 27  28         fp = fopen("./test.txt","r"); 29         //fseek(fp, 0, SEEK_SET); 30         printf("___ reading___\n"); 31  32         // 读:fgetc() 33         // 函数原型:int fgetc(FILE *fptr); 34         while( (data = fgetc(fp)) != EOF) 35         { 36                 if( data != 10 )  //换行回车符 的 ASCII码 为 10 37                         printf("%d %c, ", data, (char)data); 38                 else 39                 { 40                         printf("\n"); 41                 } 42         } 43  44         res = fclose(fp); 45         if(res < 0) 46         { 47                 printf("ERROR: unable to close file! \n"); 48         } 49         else 50         { 51                 printf("File closed. \n"); 52         } 53  54         return 0; 55 }
执行1



代码2

  1 #include <stdio.h>  2 #include <stdlib.h>  //malloc()  3   4 #define BUFFER_LENGTH 128  5   6 int main(int argc, char *argv[])  7 {  8         FILE *fp = NULL;  9         char *temp = "First\nMiddle\nLast\n"; 10         char *buffer_read = NULL; 11         int fpos; 12  13         fp = fopen("./test.txt", "w"); 14         // 写: fputs() 15         // 函数原型:int fputs(const char *str, FILE *fptr); 16         // parameter: 写什么;写到哪里去 17         fputs(temp, fp); 18         fclose(fp); 19  20         fp = fopen("./test.txt", "r"); 21  22         fpos = ftell(fp); 23         printf("File pointer pos before reading: %d\n", fpos); 24  25  26         buffer_read = (char *)malloc(sizeof(char) * BUFFER_LENGTH); 27         // 读: fgets() 28         // 函数原型:char *fgets(char *str, int length, FILE *fptr); 29         // parameter: 读到哪里里去;读多少个;从哪里读 30         while( (fgets(buffer_read, BUFFER_LENGTH, fp)) > 0) 31         { 32                 printf("reading: %s\n", buffer_read); 33         } 34  35         fpos = ftell(fp); 36         printf("File pointer pos after reading: %d\n", fpos); 37  38         fclose(fp); 39         return 0; 40 }
执行2



代码3

  1 #include <stdio.h>  2 #include <string.h>  3 #include <stdlib.h>  4   5 #define BUFFER_LENGTH 128  6   7 int main(int argc, char *argv[])  8 {  9         FILE *fp = NULL; 10         char *buffer_write = "Nan\nJing\nUniversity\n"; 11         char *buffer_read = NULL; 12         int length_write = strlen(buffer_write); 13         int res; 14  15         // 写:fwrite() 16         // 函数原型:size_t fwrite(const void *ptr, size_t size, size_t n, FILE *fptr); 17         // parameter: 写什么;每个数据的大小;数据量;写到哪里去 18         fp = fopen("./test.txt", "w"); 19         if(length_write == fwrite(buffer_write, sizeof(char), length_write, fp)) 20         { 21                 printf("success in writing data.\n"); 22         } 23         else 24         { 25                 printf("ERROR: failure in writing data\n"); 26         } 27         fclose(fp); 28  29         // 读:fread() 30         // 函数原型:size_t fread(void *ptr, size_t size, size_t n, FILE *fptr); 31         // parameter: 读到哪里去;每个数据的大小;数据量;从哪里读 32         fp = fopen("./test.txt", "r"); 33         buffer_read = (char *)malloc(sizeof(char) * BUFFER_LENGTH); 34         res = fread(buffer_read, sizeof(char), BUFFER_LENGTH, fp); 35         buffer_read[res] = '\0'; 36         fclose(fp); 37  38         printf("%s\n", buffer_read); 39  40         return 0; 41 }

执行3



原创粉丝点击