数学建模社区-数学中国
标题:
C语言中fgetc()函数用法
[打印本页]
作者:
wangzheng3056
时间:
2013-7-24 10:16
标题:
C语言中fgetc()函数用法
该函数包含在C语言中的stdio.h头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
0 O$ X$ o( i. R- y2 }+ p( T
6 i. N/ b/ U/ _* y
函数原型:int fgetc(FILE *fp);
2 Q, C, x7 B; l7 h
6 f) z' X; o7 R X/ y
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
) E4 u4 c/ u8 r2 ^& q* d8 I
6 ^2 e- }" s( ~+ w
返回值:返回所得到的字符;若读入错误,返回EOF。
+ ^" J. |4 V; \0 m9 d
: W1 |" ~* V+ n7 y9 R
下面用一个具体的例子来说明:
1 a( M/ D& T+ y ^2 p
1 A. K; s& @" a1 ]8 c: v
#include <stdio.h>
" Z6 w# I2 H1 m/ `9 m
#include <stdlib.h>
: T9 M* }3 ~ e
/ L; _3 D# R; [5 M, ]( R
int main(int argc, char *argv[])
1 o* e( ~& m/ c; ~6 o' i5 ~- w
{
0 w" S( S/ L, X$ E1 q3 b+ j6 ?, G
FILE *fp;
0 g7 E, |7 c- H9 {# p1 o3 O+ g7 D
char ch;
5 d' \0 s: l9 b/ I
+ e) |4 y/ b7 O( w ?) E8 f
if((fp=fopen("test","r"))==NULL) {
8 W3 v/ I* p' `+ h0 B
printf("Cannot open file.\n");
* P; q; J9 N' ?1 p; v/ {8 \ q
exit(1);
% r3 S0 Q3 B7 p& E
}
\- V% \5 y* w3 L0 s) v& u: F3 L
1 g* y; H" t! o _7 i
while((ch=fgetc(fp)) != EOF) {
8 S, z8 R4 k( }. S
printf("%c", ch);
" B& l3 h% L/ [( ~: V( z6 a! T
}
, H* Q2 e& I# k
fclose(fp);
+ P: R$ Q% H; @( f& s- }( ~
! C# {7 }/ Q3 O7 d
return 0;
9 n. J6 f4 T* n( a% S
}
: d j5 `0 W+ ?; n+ @; n
0 u0 c& O! a! b; p O/ d
下面给出另外一个例子:
" c; ` ]4 b5 h- @
; X, t/ t. p9 T
#include <string.h>
8 f9 [. p& j$ h: J( H: Z5 |
#include <stdio.h>
1 b/ x) l& t- C7 J [' O! k
#include <conio.h>
. ]+ p8 [" G. U# B
" a7 L! C: g [8 o3 @0 Y
* g9 m, k/ q) f% `& y8 C- A
int main(void)
( c5 F0 w: D- R
{
( D* G& N Z' k. L5 E6 Z
FILE *fp;
5 r: `( b6 L/ M& X7 y5 k
char string[] = "This is a test";
. j" [9 k: l0 d, |
char ch;
2 N7 h0 O% k0 h& |
/* 以读写方式打开一个名为test.txt的文件 */
, @8 c3 o1 L2 e% m3 z
fp = fopen("test.txt", "w+");
: o+ [0 R$ T' Q7 Y
/* 向文件中写入字符串string */
0 l$ f1 b2 R1 h( {3 \
fwrite(string, strlen(string), 1, fp);
/ ~9 S0 O$ U- j& o& \( l2 o+ h$ S1 l
/* 将fp指针指向文件首 */
" z2 v& M( L* r3 |$ b/ k
fseek(fp, 0, SEEK_SET);
( b1 z) f, U+ V6 ~
do
2 s! h2 m( ?1 z7 S" U2 H, l, h$ _9 K
{
2 m# b- e# a0 w# H
/* 从文件中读一个字符 */
9 n& H2 I4 E( L9 x B
ch = fgetc(fp);
" s+ @: a3 J9 C* m- D! Y
/* 显示该字符 */
: q6 K, t' c6 R8 B. N
putch(ch);
+ E! \# n& u R) y+ N, e$ y
} while (ch != EOF);
% _+ }, {1 q, q
fclose(fp);
* i& M' ~8 {( n+ c; G
return 0;
0 }0 f( Q* u7 f2 e
}
( t! e/ n1 W+ E1 e4 N, t# ~% ^
" U; I, n8 x) d
例程说明:
& X* C' w- T3 o% q
/ C& h7 H. G; D* s
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
5 Y. g! C' K$ d5 E
# y' W: M& Q: s0 c5 f p% `
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
. d/ u K4 q9 |1 R$ K
# ^8 m" ^# R+ V% x" c
(3)最后的运行结果是在屏幕上打印出This is a test字符串。
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5