数学建模社区-数学中国
标题:
C语言中fgetc()函数用法
[打印本页]
作者:
wangzheng3056
时间:
2013-7-24 10:16
标题:
C语言中fgetc()函数用法
该函数包含在C语言中的stdio.h头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
3 x# ]9 [( g" O, a5 R
6 E0 p% z* @) g& X! J
函数原型:int fgetc(FILE *fp);
: j0 M/ ^- Q# v2 N
$ r! X( ?( J% M3 _/ c5 b/ E3 K5 ]
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
0 X% w. X* P" B' N2 w, Z& Q6 d o0 h+ E: k
( G4 F& F9 x9 P4 a/ ]
返回值:返回所得到的字符;若读入错误,返回EOF。
& {$ o$ d3 U, l. p6 f
/ H2 f' A9 C3 Y5 U* E9 t
下面用一个具体的例子来说明:
5 Y8 n8 O* ~* t$ G3 j7 r- ?
) z0 T b+ [5 f: f5 R+ o1 M3 t
#include <stdio.h>
4 F; B3 J4 a2 R' y& V% T
#include <stdlib.h>
# }4 {- T7 V( I2 R
, ~3 ?2 N5 j' U2 V- P- ?
int main(int argc, char *argv[])
/ o/ ]; a$ A5 n$ R9 T
{
' [; A- z: R3 ^' Q/ W+ O( m+ Z
FILE *fp;
! f. h2 i: `' R* m( r. U* ]& G
char ch;
4 P3 W9 G# y. |! E
. j& p& O! U! d9 a
if((fp=fopen("test","r"))==NULL) {
+ H: d; r0 z- n. l0 `; k+ Z
printf("Cannot open file.\n");
1 D6 v( z, x4 {0 w, Y; x' [2 S
exit(1);
9 x% W6 H0 J" z7 T. r/ `
}
- L# P. t5 e" c3 L/ Y+ K
- }+ k; y) G* E0 E' @) g/ z$ T
while((ch=fgetc(fp)) != EOF) {
6 R( F' ?; f$ g) y. ~ k
printf("%c", ch);
8 `+ P" f8 E# o3 z! { c: Q! b
}
# k) N, D' L# m2 S& P
fclose(fp);
( |, S4 G& Z$ J# _% l; f
6 o" k8 W5 x' {- o1 T; [
return 0;
, E% P X, I5 t" G$ l
}
( \+ k# I: X3 t+ [- _. d
, d0 k. \2 U( }/ m
下面给出另外一个例子:
* A5 d' v$ j, |: Q2 A3 _
3 V+ D7 w* R$ a6 ~8 x" ], J8 F
#include <string.h>
" E4 n, {5 ]) b; i2 ?
#include <stdio.h>
; ~3 \' C8 V( h2 n( M" \: S
#include <conio.h>
% C1 R1 P% D3 o. h% z* P
( m. n# O- E# s* f
$ q8 d* V/ L5 L0 V$ ^2 x
int main(void)
7 j. H! x2 N1 e8 L$ M2 b% o/ x
{
1 p7 L1 r/ ]* q. m" _" i: Q
FILE *fp;
7 {6 V' }) O, I, r* S& x6 {* m
char string[] = "This is a test";
. b% s* G R2 a) P K2 F
char ch;
7 _$ [8 [. ]; @6 T
/* 以读写方式打开一个名为test.txt的文件 */
7 v# y/ U4 }1 y* n/ @0 ?$ p) g4 u Z
fp = fopen("test.txt", "w+");
& J. x0 h' j7 S
/* 向文件中写入字符串string */
: K% U8 ?9 C& ^, r9 {# h+ R
fwrite(string, strlen(string), 1, fp);
; p6 }0 R' x+ O5 y# Q1 Z% q
/* 将fp指针指向文件首 */
E% i$ }3 r3 h" m* W
fseek(fp, 0, SEEK_SET);
" \! V+ X/ p& x; a4 V
do
$ f: Y# I [* m* n9 R! F
{
4 d1 ?# s; S$ r1 E6 \, L ] I0 t- W
/* 从文件中读一个字符 */
3 L$ j6 E) C, f' z$ Y( J6 l& `4 s7 ]
ch = fgetc(fp);
( a: a/ u9 l6 s7 C8 A
/* 显示该字符 */
1 D0 x h1 J W1 m$ Z, ~. p0 g2 {
putch(ch);
2 `8 @+ X( _5 a' T( n! l
} while (ch != EOF);
% r. t- z' B$ E5 [! q) T- `( {7 O
fclose(fp);
4 y- ?) H, U, l+ g/ i; o6 F
return 0;
1 V( E H5 M ~# G( h/ u& x
}
9 y5 k/ X! V1 _2 A
, s, q; R/ ~6 ]* O9 f
例程说明:
( w; s5 ` y/ l6 {( c
! U9 D* B4 _) @" C5 F3 ]3 p, [
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
# S4 Q! z0 H0 V# \' d. x( e
0 ]$ k6 D9 B( q+ G# a/ @+ h$ u
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
- }6 [8 G7 O# I) G9 r3 L6 e
; a8 [7 p% b4 S' a
(3)最后的运行结果是在屏幕上打印出This is a test字符串。
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5