- 在线时间
- 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
( D' x/ A0 g2 U6 f* _
: Q1 Z2 O& P# |$ F. ~2 L函数原型:int fgetc(FILE *fp);+ {6 u5 T; L4 i* k
+ l7 d8 ^) F. l) X5 A0 G
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
/ N, Q0 H* w4 E0 l8 m
* @5 r( f5 X; T3 \. ]) d- L# W返回值:返回所得到的字符;若读入错误,返回EOF。( x3 [0 q0 h- V! o
& |1 ^: f y+ K2 z( x" A
下面用一个具体的例子来说明:6 _; h7 J8 L# [; V4 b
4 L: ]# d' w3 r4 L! X #include <stdio.h>
* u3 g7 K. u% Z% n: j0 s #include <stdlib.h>
- q6 [3 g- |; u; V9 |0 B. B
/ K. \% B8 q# Z9 `) v int main(int argc, char *argv[])# i/ |7 P. i& g# ]! x; y
{
. Y7 `* i# l5 ^% u, D4 O4 X FILE *fp;- D6 G$ f5 e% i1 |. N5 [
char ch;2 f' Z- f% {$ z1 I$ G4 A
. r6 c5 x9 H$ B! O: x+ x8 ]3 z if((fp=fopen("test","r"))==NULL) {
# b7 w+ C- r, [9 M3 D# c( A printf("Cannot open file.\n");
" _/ V! t$ E, q' S1 Z exit(1);
- d# K* X) L% x! c' ^( I# q }" G0 B# a3 I: }3 F7 Y
8 T# R, v, Z$ N: e4 W- U" ~
while((ch=fgetc(fp)) != EOF) {; A' Z$ W5 I5 ~8 ~3 q
printf("%c", ch);" ^" B7 e# @: e& }4 B2 D
}9 X& `" X/ v; r
fclose(fp);
. H0 ^% c' z5 h& J% ?- x% j6 h! R2 ]9 h- S; b$ s& R
return 0;
0 U) n' L5 R) d1 W/ v- f }
( P- W! L B/ }. x9 @8 q- Y
: b. F T6 s. y7 J0 \ 下面给出另外一个例子:: |0 T# _2 s8 K5 X5 i( H( n, h
3 h( K: {5 a0 B* i" g( P
#include <string.h>$ U3 \" n3 w$ q# r: i
#include <stdio.h>
9 _% J$ w% i& n4 F) K #include <conio.h>
4 x1 E6 k# k1 h 7 R& @( I( ~# {, I# \8 u4 N& T9 R1 h2 r
. Z! S. t* Q$ v- @5 r, a4 Y! M3 g
int main(void); c. L6 f5 v t& I& ]8 ?' d' h) J
{
% g, {) X3 @1 m# z FILE *fp;
& d8 ?' D1 S. y" L char string[] = "This is a test"; ' N" o& E {8 t% A2 L, E
char ch;
, r4 ^6 n% }6 O; Q /* 以读写方式打开一个名为test.txt的文件 */
i7 j6 r2 e9 L" u- L9 Y5 F fp = fopen("test.txt", "w+"); 6 g/ t5 r- @5 ?/ p4 k. |2 o
/* 向文件中写入字符串string */. o$ q: U, }1 R1 V
fwrite(string, strlen(string), 1, fp);
* N" I: @& N9 `7 H /* 将fp指针指向文件首 */
4 n# N( B9 @, }+ b* y2 \ fseek(fp, 0, SEEK_SET); 4 L& E1 _( L; q# b1 q
do
/ T: g1 v c% _/ }' B3 Q9 P! u! E { ; T/ y* O' H* Z: c' d9 l1 ], E
/* 从文件中读一个字符 */
& J" N" B& L a ch = fgetc(fp);
! Z$ b" W# B3 y! z5 I0 q* e4 U /* 显示该字符 */0 i! \6 t+ {: o
putch(ch); " Y" K- e" a4 V; _# ?
} while (ch != EOF); , @& I9 w) R4 G4 r# U
fclose(fp); 0 _7 Q3 c3 C: m% q6 T- P+ {3 i
return 0;
1 j' g- z$ O$ @% b }
$ r, I4 n9 ?" I
. h2 P9 {7 K% P* U( t3 t( v例程说明:
$ D' Y# [; U T" l: V" ]& M: L* |( N! m& l3 R" [
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。, W5 n% \& ^2 k1 g, ?6 ?. |
( _; ^. R9 H2 c. s: s: D; r
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
& _0 b4 B" a6 z' w6 n; D# o* j
: M+ i6 B4 P! g/ u) R(3)最后的运行结果是在屏幕上打印出This is a test字符串。 |
zan
|