linux下的文件輸入輸出fgetc、fputc,fgets、fputs,fread、fwrite

我們平時在對一個文件進行操作的時候會進行如下步驟:

  1. 打開文件;
  2. 對文件進行操作(一般我們是進行讀寫操作);
  3. 關閉文件:

下面我們就圍繞linux操作系統中,對一個文件的操作進行簡單講解

打開文件

使用 <stdio.h>頭文件中的==fopen()==函數即可打開文件,它的用法爲

FILE *fopen(const char *path, const char *mode);

path 爲文件路徑(包括文件名);mode 爲打開方式,兩個都是字符串,也就是我們輸入的時候都是帶雙引號的;FILE 爲一個結構體,用來保存文件信息。

打開方式

在這裏插入圖片描述
注意:調用fopen()函數時,必須指明打開權限,但可以不指名讀寫方式(默認爲“”t“”)

文件的讀寫

以字符形式讀寫文件

fgetc()
 int fgetc(FILE *fp);

fp 爲文件指針。fgetc()讀取成功時返回讀取到的字符,讀取到文件末尾或者讀取失敗時返回EOF(一般我們認爲EOF和-1等價,所以這裏返回值是int類型)。
用法:

#include <stdio.h>

char ch=0;
FILE *fp=fopen("/home/farsight/Desktop/a.txt","r+");
ch=fgetc(fp);

printf("%c\r\n",ch);

注意:當讀取到EOF時,如何區分是讀到文件末尾還是文件出錯。此時需要用到兩個函數 foef()和 ferror()。

// feof()函數:當到達文件末尾時返回非零值,否則返回零值;
int feof(FILE *fp);
// ferror()函數:出錯時返回非零值,否則返回零值;
int ferror(FILE *fp);
fputc()
int fputc(int c, FILE *fp);

c 爲要寫入的字符,fp爲文件指針。fputc()寫入成功時返回寫入的字符,失敗時返回EOF。

#include <stdio.h>

char ch='a';
FILE *fp=fopen("/home/farsight/Desktop/a.txt","r+");
fputc(ch,fp);

【示例】:

 1 #include <stdio.h>
  2 //讀函數
  3 void read(FILE *fp)
  4 {
  5     char ch=0;
  6     while(ch=fgetc(fp)!=EOF)
  7     {
  8         printf("%c\r\n",ch);
  9     }
 10 
 11    if(feof(fp))
 12     printf("文件到達末尾\r\n");
 13     else
 14     printf("文件出錯\r\n");
 15 }
 16 
 17 //寫函數
 18 void write(FILE *fp)
 19 {
 20     char ch=0;
 21     ch=getchar();
 22     fputc(ch,fp);
 23     fputc('\n',fp);
 24 }
 25 int main()
 26 {
 27     FILE *fp;
 28     fp=fopen("/home/farsight/Desktop/a.txt","r+");
 29     if(fp==NULL)
 30     {
 31         perror("open file error\n\r");
 32         return -1;
 33     }
 34     read(fp);
 35     write(fp);
 36     fclose(fp);
 37     return 0;
 38 }     

【結果】:
在這裏插入圖片描述
在這裏插入圖片描述
一般我們對文件操作時,很少以字符爲單位進行操作,所以,大家掌握它的用法就可以了,不用管怎麼存。

以行形式讀寫文件

fgets()
char *fgets(char *str, int size, FILE *fp);

str爲字符數組,size爲要讀取得字符數目,fp爲文件指針。
讀取成功時返回字符數組首地址,讀取失敗時返回NULL;如果開始讀取時,文件指針就在文件末尾,也返回NULL。

#define N 100

char str[N+1]={0};
FILE *fp=fopen("/home/farsight/Desktop/a.txt","r+");
fgets(str,sizeof(str),fp);

printf("%s\r\n",str);
fputs()
int fputs(const char *str, FILE *fp);

str爲要寫入的字符串,fp爲文件指針。寫入成功返回非負數,寫入失敗返回EOF。
【示例】:

 1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5     int ret=0;
  6     FILE *fp=fopen("/home/farsight/Desktop/source/a.txt","r+");
  7     if(fp==NULL)
  8     {
  9         printf("打開文件失敗\r\n");
 10     }else{
 11         printf("打開文件\r\n");
 12          }
 13 
 14     char str[100]="hello C is the best language";
 15     char arr[100]={0};
 16     if(ret=fputs(str,fp)!=EOF)
 17     {
 18         puts("寫入成功");
 19     }
 20     else
 21     {
 22         puts("寫入失敗");
 23     }
 24     
 25     FILE *fq=fopen("/home/farsight/Desktop/source/b.txt","r+");
 26     fgets(arr,sizeof(arr),fq);
 27     printf("%s",arr);
 28     
 29     fclose(fp);
 30     fclose(fq);
 31     return 0;
 32     
 33 }

【結果】:
在這裏插入圖片描述

關閉文件

當我們操作完文件後,應該使用==fclose()==函數關閉文件,以釋放相關資源,避免數據丟失。用法爲:

int fclose(FILE *fp);

fp爲文件指針,就是fopen()函數的返回值;文件正常關閉時,返回爲0,如果返回非零值則表示有錯誤發生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章