Linux C 文件操作

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值