- 在线时间
- 490 小时
- 最后登录
- 2024-2-3
- 注册时间
- 2013-2-28
- 听众数
- 117
- 收听数
- 46
- 能力
- 268 分
- 体力
- 39235 点
- 威望
- 1340 点
- 阅读权限
- 255
- 积分
- 31237
- 相册
- 2
- 日志
- 0
- 记录
- 0
- 帖子
- 1388
- 主题
- 937
- 精华
- 0
- 分享
- 0
- 好友
- 111
升级   0% TA的每日心情 | 衰 2020-10-25 11:55 |
|---|
签到天数: 264 天 [LV.8]以坛为家I
- 自我介绍
- 内蒙古大学计算机学院
 群组: 2013年数学建模国赛备 |
该函数包含在C语言中的stdio.h头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
; S& B& ?( s' M7 E
{" y* [7 c I函数原型:int fgetc(FILE *fp);% h$ K, l( Q- f) _. E0 d2 n. _
8 J3 s$ O& |9 G1 z. c8 ^
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
* e. W+ f2 {+ ~ I3 i7 E6 q- M& F3 ~# L0 L: @% u3 S" U3 S
返回值:返回所得到的字符;若读入错误,返回EOF。
7 J U v/ N" S: z1 x, B, v* S: h5 X- F1 z4 K8 i
下面用一个具体的例子来说明:
, s! ~. ^7 f4 o2 s: v
' r; R% p% W* m, V0 L #include <stdio.h>
- B; @% b! w1 ~+ } #include <stdlib.h>% z0 X7 t& A3 {% O6 C
8 s; U2 Z# E9 _( I, p5 l& ^ int main(int argc, char *argv[])) V1 a; }( W( }3 K% h
{7 w# Q+ h |) O. d, J9 J
FILE *fp;& F" A7 I* _. l* ?* [2 @/ O0 y
char ch;
8 M: Q; H- G1 d! Z: t5 F5 P, V% s$ I/ x `. P5 ?
if((fp=fopen("test","r"))==NULL) {
' B, g% O2 s. @6 H4 j! S, Y) x6 q printf("Cannot open file.\n");! ?( ^/ D, D2 P, ]
exit(1);
4 D: [7 G, z5 a/ X F; B- W6 S0 p }
1 J6 @6 c. S J! B' k
4 V: E: z1 G' S* C* a while((ch=fgetc(fp)) != EOF) {) c* L& x X6 ^3 W; K
printf("%c", ch);
" K. {& ^6 a9 Y }5 G# H) i2 c$ b" H
fclose(fp);4 J2 Y# r! Q. ]; G& X; r
. p6 R9 f! E1 d; A7 v$ D return 0; B8 I3 k! k4 ?; M% c. Z4 Z
}
; S) d t/ U( t1 R( W7 c9 W) p4 V, x- i1 P5 z8 q- b0 E& T
下面给出另外一个例子:
0 C5 R. h0 O% G5 H; i) Z8 h Z* ?# l/ }( Y1 |' b [( S( p" W; z6 X
#include <string.h>
9 M$ ]) j3 v: s8 f #include <stdio.h>/ }' \4 k3 ^& c, E, T4 b
#include <conio.h>
" C8 b8 Z* p$ T1 c8 W
9 S& o5 u: q( G7 i
9 ^0 j/ }$ K, y" ^3 I4 }int main(void)5 i7 u! w; _( g& I0 {7 h
{; _7 I7 s) j' g6 T, O' M. j
FILE *fp;
5 S) \* F) m6 _: E( P char string[] = "This is a test"; 0 m- W9 X' i, a& k: C! @
char ch;
& y( _$ _; C, Q1 {, F1 k0 t, t, p1 k4 ^ /* 以读写方式打开一个名为test.txt的文件 */& `+ W p& N$ G4 C4 Y& i2 F4 F
fp = fopen("test.txt", "w+"); 2 [0 \8 R/ U$ V) K2 i$ u' l* R
/* 向文件中写入字符串string */
4 J; I& ^% I, C! a1 o fwrite(string, strlen(string), 1, fp);
# [( P4 E" P& p0 X* k+ g4 t& ]$ f4 S, W /* 将fp指针指向文件首 */
8 w: F& t& V( i fseek(fp, 0, SEEK_SET);
2 }: g2 n7 x& u% a do
' j! c0 R. s2 n6 ] { 2 k: E) m7 r$ O) O7 A3 v6 [+ c
/* 从文件中读一个字符 */% @1 s2 k* o& g3 l
ch = fgetc(fp);
/ R9 g2 ]4 Q; W, D9 ?3 | /* 显示该字符 */
3 J9 {* t8 f0 E$ q8 t' o. [7 ] putch(ch);
- B4 i9 d& c& f0 n- x E' w } while (ch != EOF);
: @$ s- A7 n2 e fclose(fp); 8 L* t, \; [: s g! I5 I- R" y
return 0;
{1 _, J0 T( T2 h' L Y }
# Y$ v9 V6 o; W, ^: L4 Q
' [: I& S0 [: S! _- L例程说明:
0 @8 k1 _ a. [0 a, W2 j) { U
9 _% I6 H! }1 p: F3 J8 u# w(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
) ~2 l' g5 H2 T, g; ^' W5 R. `5 E$ H5 W
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。2 }" j0 F5 U0 n' a8 y# |' _) f
" S- j! @# f' [. O } X! J1 T
(3)最后的运行结果是在屏幕上打印出This is a test字符串。 |
zan
|