- 在线时间
- 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。! e- W$ V8 ^/ D+ A. r
( a. l) @& D9 U6 M5 W
函数原型:int fgetc(FILE *fp);
0 `; ?' R. G( |' P; z$ L2 E2 M V6 i7 p0 y/ K0 k
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。0 {1 p9 _- D! _! f$ \" o% ~
8 o! ^( t/ _! `. L" v- F) K返回值:返回所得到的字符;若读入错误,返回EOF。& R) e/ d6 P+ h( `+ s
3 [2 g% _$ F' k- x下面用一个具体的例子来说明:
) x8 g1 I8 L8 M6 ~& H: r3 ?) R7 m7 x+ U5 Y
#include <stdio.h>/ _; Z- {! X# R @2 [+ j" S6 [( @
#include <stdlib.h>% C$ V3 I! {# ^, e
; `: c1 O" Q' r
int main(int argc, char *argv[])
. d; t; b* E) q& `$ O' N/ i {
# W! i+ \* v2 c1 J% H9 ~* S FILE *fp;' z; q4 t0 Y5 A" \ P, X
char ch;, A1 u4 Y( ]# y. C, H# W
3 p8 }; a7 E ~& F! I) ]+ P+ b. M if((fp=fopen("test","r"))==NULL) {
~2 G; G2 I% r1 I* t4 K6 g& P" s printf("Cannot open file.\n");. S( `% o1 N" q' R
exit(1);
1 l- v5 Z3 ?$ S% L$ T' B; W: X X }3 R9 d& p- [6 X* H8 {! ~
; R1 z' ?& }% _7 m! X# O% S* R
while((ch=fgetc(fp)) != EOF) {( y2 x+ x5 n# F L: ]4 F8 |) g
printf("%c", ch);
* T2 r/ z# ^% J6 N- ^4 m' Y }
2 n4 v0 A$ p: Q- [ fclose(fp);
3 T2 m4 w9 V! O; V9 J5 Y Z7 |, @( P7 N5 n' O' j. i
return 0;
. F& Q v0 V" e }2 V7 @1 q1 i4 L0 [2 R9 g8 T4 \3 k
3 A' ]* _. g* H" f 下面给出另外一个例子:1 O. `/ Z3 L9 B+ d0 F1 F
7 s- c o& K/ w9 n# l3 k1 K#include <string.h>
0 ?# N! O6 u7 \; V$ Y" z5 l3 k #include <stdio.h>
3 z' s0 J) L& T #include <conio.h>
4 b* A5 _5 _& b% h& g* R9 E
9 L: s8 E, M* F
; K6 Q8 i% {' X) `9 dint main(void); Q- H# A" }% H
{' N6 V( E1 Q+ I: t6 M0 H: y
FILE *fp;
) {+ X$ B0 f8 i3 d( M; ^ char string[] = "This is a test";
3 p% j* e- V6 |4 k1 w char ch; + ~& D* f% ~ V+ f0 y1 \
/* 以读写方式打开一个名为test.txt的文件 */; P+ o* F5 j) ^' m. j* d1 ^* R
fp = fopen("test.txt", "w+");
, r1 S# c w8 e0 V1 p& Q" P/ X /* 向文件中写入字符串string */0 O( H$ K' q: }: R$ S- M
fwrite(string, strlen(string), 1, fp);
, o$ Y& G8 P1 f1 l8 C /* 将fp指针指向文件首 */. K) K$ I& [, ?3 \" h
fseek(fp, 0, SEEK_SET); 7 q& N `/ n$ N" f2 \. e
do
8 q6 E4 q" F9 E { % e5 S n0 y, ]2 p n( h: F
/* 从文件中读一个字符 *// Y" }1 w9 h, e& p, w
ch = fgetc(fp);
" B$ L% t6 m9 L8 o$ ?/ x /* 显示该字符 */& S- c" M! b$ N S6 R+ l2 a
putch(ch);
0 M8 X2 ]/ t" O# Q } while (ch != EOF);
" H/ x8 v B5 T |( [2 O: @% m M! K fclose(fp); ' v" g" q9 r0 q
return 0; % {/ P& X3 q# T. }7 |) K/ i5 ^
}+ M+ U$ [/ B6 a- `* `: t0 U+ W {
1 o: O; c! B7 k3 ^( B' ]
例程说明:# S2 g) O& _7 Z+ o
/ S. v( Q" }$ u: {6 G9 \, o(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。& e, V: ], \: q+ t
& T2 n6 `* [/ B& b; M' [& v9 O6 a: G
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
9 V2 K$ ^9 t9 o+ A
7 L2 t7 H. |& |7 {# q(3)最后的运行结果是在屏幕上打印出This is a test字符串。 |
zan
|