- 在线时间
- 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。1 p7 _ N) B' d" S4 z
* P% n( @# l; `8 n函数原型:int fgetc(FILE *fp);
) _: N, E3 L( i1 P% ~' g! r4 W( e3 P7 L0 n
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
# W1 B, `. o3 p( X; q7 g3 w8 y+ F( L9 ~" d3 F: I
返回值:返回所得到的字符;若读入错误,返回EOF。
e4 K. w7 M9 h3 j/ R, [- H, I8 X
: P+ n4 v d' q( e7 [; W: ?5 S3 k下面用一个具体的例子来说明:
% g0 O1 i; [6 a9 f% g3 Z5 y, E# {7 N' k6 K8 r' s, z
#include <stdio.h>
' U5 d& [1 k7 M #include <stdlib.h>
7 ^+ |" c _' o/ V5 p7 H, K1 ]/ \) z# ^5 z7 d4 v" `4 c+ k
int main(int argc, char *argv[])# ~! ]5 f& k/ |7 Q/ O# K- M
{
: J/ x+ l- a0 q FILE *fp;
0 {) F* h* l/ j char ch;9 P. L( A) s) \* l% r( f
3 x3 E+ I+ t1 q if((fp=fopen("test","r"))==NULL) {
* ]# U5 s. s' W3 F8 K4 m$ [ printf("Cannot open file.\n");
- |; E$ _9 v7 p9 p exit(1);% p) i4 b2 K5 r
}
2 r F; K; ?3 ^% l9 U9 @2 E4 P
$ W& B5 B& f2 ^1 j+ N4 N" R* M while((ch=fgetc(fp)) != EOF) {
' Q% o [* l1 s; W: ^7 @- ~$ v: w printf("%c", ch);* m0 c2 }/ \& A0 g- ]. \: u% G9 O
}
" W+ a$ j; t. ]3 v# V2 E fclose(fp);
1 C" V( q8 u$ i9 G* M+ C+ }/ R) S. t
( O; ~( }% L( `" T4 | return 0;
* Q; L4 @; r& J# e6 n4 n }% R; a B' P+ q
+ f" Y( s: N. U# M% t/ X
下面给出另外一个例子:$ w1 I: U7 w4 l. x
( s2 Y: n2 a$ h- u
#include <string.h>9 R9 \0 ]' Q& t8 N1 b
#include <stdio.h>
7 k5 Q* {! ?% q7 M" Q+ T8 n #include <conio.h>; S3 E- d$ `5 i- n* ]; N
; e: Y) I4 b9 ~* X* S- g; K! | ~( |0 A
- N0 E& Z/ r g \0 h6 Rint main(void)
; u. N+ j& K w7 p% R4 E$ ~ {
* j" v$ }9 H/ T' m3 Q8 T* T# O! q FILE *fp;
9 j$ w& o5 I4 ~' ` char string[] = "This is a test"; 3 j: r, C4 |0 n4 U- [4 N, z
char ch; 5 g5 @1 k& i2 ~5 U6 x. v( y% W) W- B
/* 以读写方式打开一个名为test.txt的文件 */# ?& b* K! f1 s1 n3 P: A
fp = fopen("test.txt", "w+"); 6 Q( l' G6 a5 i' |6 h! G
/* 向文件中写入字符串string */
( J9 I: A' T% e8 w1 i fwrite(string, strlen(string), 1, fp); 5 ?8 i. X" x w! N9 i
/* 将fp指针指向文件首 */$ X$ G+ L, j6 _: o1 p
fseek(fp, 0, SEEK_SET);
1 g# `5 S4 x' | do 3 _: E% B/ `. N) a
{
3 B- _; @' X( ~! l /* 从文件中读一个字符 */' V( p1 K1 T! f* j
ch = fgetc(fp); 9 @( m5 t* @1 o7 I
/* 显示该字符 */
' J' o. C, X2 P3 F4 n. B6 P7 C putch(ch);
* ]' y+ u5 Z. c2 C } while (ch != EOF);
) u E& S& [, r4 C fclose(fp);
/ g( K, Z& f1 y) o/ J8 Z8 I return 0;
6 `7 R5 F6 u6 w! { i }
" ~& w, u6 h8 A3 O C" y
- q7 R2 I1 @& P4 n9 Y例程说明:0 j, r, F, {3 h8 V$ M1 p4 U$ e
# A4 o' V+ L5 G0 j
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。$ r& o. w& h1 f
. R1 o9 E' n a4 x$ `; }& c* v(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。. d: L% x1 E' I9 D6 X% _# o
* v' d3 l6 k) l! N(3)最后的运行结果是在屏幕上打印出This is a test字符串。 |
zan
|