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);
}