C:檔案操作-讀寫字元與讀寫行

來源:互聯網
上載者:User

1.讀寫字元函數putc()與getc()

這兩個函數類似於putchar()與getchar()函數。假設fp是一個FILE指標,ch是一個字元變數,

ch = getc(fp);// ch = getchar();
putc(ch,fp);// putchar(ch);

將檔案內容(按字元)輸出到標準輸出的C實現:

#include <stdio.h>
#include <stdlib.h>
/* 將檔案內容(按字元)輸出到標準輸出 */
void read_ch(char * filename, char * mode)
{
    int ch;
    FILE * fp;
    if ((fp = fopen(filename,mode)) == NULL)
    {
        fprintf(stderr,"Can't open %s.\n",filename);
        exit(1);
    }
    while ((ch = getc(fp)) != EOF)
       putc(ch,stdout);
    fclose(fp);
}

2.讀寫行函數fgets()與fputs()

gets()函數只需要一個參數(char *),而fgets()函數需要三個參數,(char *, int, FILE *)。第一個參數是用於儲存輸入的地址,第二個參數表示字串的最大長度,最後一個參數是FILE指標。通常是:

fgets(buf, MAX, fp);//gets(buf);

fgets()函數讀取到它所遇到的第一個分行符號的後面,或者讀取比字串的最大長度少一個字元,或者讀取到EOF。然後它會在末尾添加一個'\0',這就構成了一個字串。(這和gets()不同,它會讀取到'\n'之前,並添加一個'\0',而再次讀取時,會丟棄'\n')。與gets()類似,fgets()遇到EOF時會返回NULL,否則返回傳遞給它的地址。

fputs()函數接受兩個參數,(char *, FILE *)。與puts()不同的是,它不會自動添加'\n'。通常是:

fputs(buf, fp);//puts(buf);

將檔案內容(按行)輸出到標準輸出的C實現:

#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 21
/* 將檔案內容(按行)輸出到標準輸出 */
void read_line(char * filename, char * mode)
{
    char line[MAXLINE];
    FILE * fp;
    if ((fp = fopen(filename,mode)) == NULL)
    {
        fprintf(stderr,"Can't open %s.\n",filename);
        exit(1);
    }
    while (fgets(line, MAXLINE,fp) != NULL)
       fputs(line,stdout);
    fclose(fp);
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.