- 在线时间
- 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
' B7 L+ _! e% F5 Y) P3 {4 G) _- _* \1 o! r7 K
函数原型:int fgetc(FILE *fp);$ X& R# }) w6 K9 V" A3 D
' S. W9 i# \% U9 g# n% O
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。- l9 I l+ o! L6 L
* Y- g! |( s/ t* n/ k
返回值:返回所得到的字符;若读入错误,返回EOF。
' h4 {8 W4 M' _$ y. A# ~/ h+ H
. \! e4 z8 D5 `- N下面用一个具体的例子来说明:
3 r2 @: z3 Z4 f" r, q: y t, v) S$ y0 I/ a
#include <stdio.h>
4 d M3 [- R- J; ~. o9 g% y #include <stdlib.h>$ i: l' \: x# ?& s4 I9 O
; ?9 x# z. H: |& @% w0 ^- L int main(int argc, char *argv[])9 _7 X) y# e; s! E+ f e
{
0 ^. X/ \* s: \8 t3 v+ w& b; ] FILE *fp;
' W" d3 y& W0 k char ch;: k& f) L4 Z% @& z% w- i+ {% o
/ M( O! x4 A* s( X: Y/ l
if((fp=fopen("test","r"))==NULL) {: n+ D% l3 [9 L, w
printf("Cannot open file.\n");* e- A9 {# G, d q: m
exit(1);5 v. c2 g0 @# W$ g# G' S
}
: T3 A d! W& z7 I& U( ~% z: I3 n# m. n/ N
while((ch=fgetc(fp)) != EOF) {
0 ^9 ]% U" b u: U1 E! l printf("%c", ch);! M3 P$ S5 P4 c, T0 \6 N+ K" @% N
}6 Y8 j0 ?' V7 V/ l! s6 r1 C' J
fclose(fp);1 l: @; }% O, Z0 h2 Y
3 V! B0 w6 d4 W/ H return 0;
; o) P/ J/ k; O* p) d& ] }
) Q2 A* D: D1 }8 `: k' J# L
( d. k, [* q1 w! j: |' V 下面给出另外一个例子:- ?8 T" \% W2 v. O- Y4 R7 ^
1 J2 E3 `1 l/ e8 H# {7 O#include <string.h># N) _5 G4 j+ X$ d
#include <stdio.h>+ r# k9 k7 O$ |2 K+ w+ l$ ~
#include <conio.h>- P6 m6 D8 R4 Z0 R. @7 F, z
+ E; y0 g! p' [
9 l( G' i, j' a ^+ H; l/ p* Z" Vint main(void)
3 S/ N# A2 l V7 s5 E& H, u {
: D6 r0 O5 _' y0 Q/ U% V8 Z FILE *fp;
; c2 L2 j+ S4 j3 N4 y char string[] = "This is a test";
d( v" k/ b# r' P7 k char ch; - \- U, x0 W3 J/ F1 B- h
/* 以读写方式打开一个名为test.txt的文件 */- z7 A/ P7 `0 D
fp = fopen("test.txt", "w+"); + }4 w4 M; @3 ], L
/* 向文件中写入字符串string */9 X7 ~1 k5 Q/ ~
fwrite(string, strlen(string), 1, fp);
( n& j. O0 g( V2 o; N3 d1 V /* 将fp指针指向文件首 */) x" O0 Q3 ]% i. V9 \7 Y
fseek(fp, 0, SEEK_SET); ' ?, {2 S2 ]0 G4 a
do I1 d2 z2 j, x8 e8 A8 {
{
8 @" }2 N* u" G5 G4 t6 r& Y7 D& l+ Y /* 从文件中读一个字符 */( L8 G' u K6 P1 S) J
ch = fgetc(fp);
0 ]2 P; d8 L/ Q U- M6 K2 _0 k2 ]" i /* 显示该字符 */
6 a+ v8 H8 _1 u putch(ch);
9 H$ A; O' C6 D& L$ h: T$ e } while (ch != EOF);
0 [9 F4 f0 @: @5 R fclose(fp);
! |4 [& b2 M* U! R9 d return 0;
! f- K0 W0 p1 X0 G/ _& a }/ j: [9 T7 H! H# K V9 h, B/ o
7 Y8 D8 Y6 @: |, ?) P例程说明:
: I" d' `( q9 c" a% R, B$ I5 v5 |; ?' }0 @: P6 |+ u8 p1 @
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
: o) q- \! X% |& t% j4 O& J* e1 O. h0 i" F+ B
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。1 P2 @6 K; v8 W0 C" w
4 r: Q8 ?/ |* x! `(3)最后的运行结果是在屏幕上打印出This is a test字符串。 |
zan
|