物聯網學習教程—檔案的讀寫一

千鋒教育官方發表於2019-08-27

檔案的讀寫

一、字元輸入輸出函式(fputs() fgets())

 

fputs 函式

函式呼叫:

fputs ( ch fp )

函式功能:

將字元(ch 的值)輸出到 fp 所指向的檔案中去。

返回值:

如果輸出成功,則返回值就是輸出的字元;

如果輸出失敗,則返回一個EOF

fgets 函式

 

函式呼叫:

ch fgets fp );

函式功能:

從指定的檔案讀入一個字元, 該檔案必須是以讀或 讀寫方式開啟的。

返回值:

讀取成功一個字元,賦給ch。 如果遇到檔案結束符,返回一個檔案結束標誌 EOF

常見的讀取字元操作

 

從一個文字檔案順序讀入字元並在螢幕上顯示出來:

   ch = fgetc fp );

   while ch =EOF

  {

       putchar ch );

        ch = fgetc fp );

 

注意:EOF 不是可輸出字元,因此不能在螢幕上顯示。

由於字元的ASCII 碼不可能出現-1,因此 EOF 定義為 -1是合適的。當讀入的字元值等於-1時,表示讀入 的已不是正常的字元而是檔案結束符。

常見的讀取字元操作

 

從一個二進位制檔案順序讀入字元:

   while (! feof fp ))

  {

        ch = fgetc fp );

 

 

注意:ANSI C 提供一個 feof ()函式來判斷檔案是否真的結束。如果是檔案結束,函式 feof fp )的值為1 (真);否則為0(假)。以上也適用於文字檔案的讀取。

#include <stdlib.h>

#include <stdio.h>

void   main(void)

 {  FILE *fp;

       char ch,filename[10];

       scanf("%s",filename);

       if((fp=fopen(filename,"w"))==NULL) {

        printf("cannot open file\n");

        exit(0); /* 終止程式 */}

     ch=getchar( ); /* 接收執行 scanf 語句時最後輸入的回車符 */

     ch=getchar( ); /* 接收輸入的第一個字元 */

     while(ch!='#'{

               fputc(ch,fp);putchar(ch);

  ch=getchar(); }

     fclose(fp);

 }

 

執行情況如下:

file1.c              (輸入磁碟檔名)

computer and c#(輸入一個字串)

computer and     (輸出一個字串)

#include <stdlib.h>

#include <stdio.h>

 main( )

{FILE *in,*out;

 char ch,infile[10],outfile[10];

 printf("Enter the infile name:\n");

 scanf("%s",infile);

 printf("Enter the outfile name:\n");

 scanf("%s",outfile);

 if((in=fopen(infile,"r"))==NULL)

 { printf("cannot open infile\n");

      exit(0);}

  if((out=fopen(outfile,"w"))==NULL)

      { printf("cannot open outfile\n");

            exit(0);}

       while(!feof(in))fputc(fgetc(in),out);

            fclose(in);

            fclose(out);}

執行情況如下:

Enter the infile name

file1.c(輸入原有磁碟檔名

Enter the outfile n ame:

file2.c (輸入新複製的磁碟檔名) 

程式執行結果是將file1.c檔案中的內容複製到 file2.c中去。

執行方法:#include <stdlib.h>

#include <stdio.h>

main(int argc,char *argv[ ])

{FILE *in,*out;

 char ch;

 if (argc!=3)

 { printf("You forgot to enter a filename\n");

exit(0); }

if((in=fopen(argv[1],"rb"))==NULL)

{ printf("cannot open infile\n");

      exit(0);}

            if((out=fopen(argv[2],"wb"))==NULL)

     { printf("cannot open outfile\n");

            exit(0);}

            while(!feof(in)) fputc(fgetc(in),out);

 fclose(in);

 fclose(out);}

 

設經編譯連線後得到的可執行檔名為a.exe ,則在 DOS 命令工 作方式下,可以輸入以下的命令列:

C>a  file1.c file2.c

file1.c和file2.c,分別輸入到argv[1] 和argv[2]中,argv[0]的內容為 a ,argc的

值等於3

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69914734/viewspace-2655115/,如需轉載,請註明出處,否則將追究法律責任。

相關文章