一、讀字符函數(shù)fgetc
fgetc函數(shù)的功能是從指定的文件中讀一個(gè)字符,函數(shù)調(diào)用的形式為: 字符變量=fgetc(文件指針); 例如:ch=fgetc(fp);其意義是從打開的文件fp中讀取一個(gè)字符并送入ch中。
對(duì)于fgetc函數(shù)的使用有以下幾點(diǎn)說明:
1. 在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打開的。
2. 讀取字符的結(jié)果也可以不向字符變量賦值,例如:fgetc(fp);但是讀出的字符不能保存。
3. 在文件內(nèi)部有一個(gè)位置指針。用來指向文件的當(dāng)前讀寫字節(jié)。在文件打開時(shí),該指針總是指向文件的第一個(gè)字節(jié)。使用fgetc 函數(shù)后, 該位置指針將向后移動(dòng)一個(gè)字節(jié)。 因此可連續(xù)多次使用fgetc函數(shù),讀取多個(gè)字符。 應(yīng)注意文件指針和文件內(nèi)部的位置指針不是一回事。文件指針是指向整個(gè)文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內(nèi)部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,每讀寫一次,該指針均向后移動(dòng),它不需在程序中定義說明,而是由系統(tǒng)自動(dòng)設(shè)置的。 來源:www.examda.com 來源:www.examda.com
[例10.1]讀入文件e10-1.c,在屏幕上輸出。
#include
main()
{
FILE *fp;
char ch;
if((fp=fopen("e10_1.c","rt"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
本例程序的功能是從文件中逐個(gè)讀取字符,在屏幕上顯示。 程序定義了文件指針fp,以讀文本文件方式打開文件“e10_1.c”, 并使fp指向該文件。如打開文件出錯(cuò), 給出提示并退出程序。程序第12行先讀出一個(gè)字符,然后進(jìn)入循環(huán), 只要讀出的字符不是文件結(jié)束標(biāo)志(每個(gè)文件末有一結(jié)束標(biāo)志EOF)就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內(nèi)部的位置指針向后移動(dòng)一個(gè)字符,文件結(jié)束時(shí),該指針指向EOF。執(zhí)行本程序?qū)@示整個(gè)文件。
fgetc函數(shù)的功能是從指定的文件中讀一個(gè)字符,函數(shù)調(diào)用的形式為: 字符變量=fgetc(文件指針); 例如:ch=fgetc(fp);其意義是從打開的文件fp中讀取一個(gè)字符并送入ch中。
對(duì)于fgetc函數(shù)的使用有以下幾點(diǎn)說明:
1. 在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打開的。
2. 讀取字符的結(jié)果也可以不向字符變量賦值,例如:fgetc(fp);但是讀出的字符不能保存。
3. 在文件內(nèi)部有一個(gè)位置指針。用來指向文件的當(dāng)前讀寫字節(jié)。在文件打開時(shí),該指針總是指向文件的第一個(gè)字節(jié)。使用fgetc 函數(shù)后, 該位置指針將向后移動(dòng)一個(gè)字節(jié)。 因此可連續(xù)多次使用fgetc函數(shù),讀取多個(gè)字符。 應(yīng)注意文件指針和文件內(nèi)部的位置指針不是一回事。文件指針是指向整個(gè)文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內(nèi)部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,每讀寫一次,該指針均向后移動(dòng),它不需在程序中定義說明,而是由系統(tǒng)自動(dòng)設(shè)置的。 來源:www.examda.com 來源:www.examda.com
[例10.1]讀入文件e10-1.c,在屏幕上輸出。
#include
main()
{
FILE *fp;
char ch;
if((fp=fopen("e10_1.c","rt"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
本例程序的功能是從文件中逐個(gè)讀取字符,在屏幕上顯示。 程序定義了文件指針fp,以讀文本文件方式打開文件“e10_1.c”, 并使fp指向該文件。如打開文件出錯(cuò), 給出提示并退出程序。程序第12行先讀出一個(gè)字符,然后進(jìn)入循環(huán), 只要讀出的字符不是文件結(jié)束標(biāo)志(每個(gè)文件末有一結(jié)束標(biāo)志EOF)就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內(nèi)部的位置指針向后移動(dòng)一個(gè)字符,文件結(jié)束時(shí),該指針指向EOF。執(zhí)行本程序?qū)@示整個(gè)文件。