- 在线时间
- 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。: U3 ^% ^' e; K: U g) X
0 C# s0 |( N- ^# d( D' i3 S1 G1 Q
函数原型:int fgetc(FILE *fp);! `- T# P: A9 t8 X3 f$ H
. K7 H9 L$ Q+ y& x7 Q: Y/ }2 o函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。# z* V7 x5 e- R. Z& J$ O1 O* D. {$ ]
0 h/ |+ D, s; N, b9 c2 y$ m返回值:返回所得到的字符;若读入错误,返回EOF。# ~( M+ A5 U, \3 o: q/ I" [
9 T |# L/ s x" N* u
下面用一个具体的例子来说明:
0 ?. e: I/ L4 w0 q& E6 U
9 v$ S8 g$ m( V* v #include <stdio.h>+ s {/ n& M5 T& j( D: M. o
#include <stdlib.h>
1 Z8 M% {- Q+ W% ~" {; j5 o/ p" o# \/ H. b
int main(int argc, char *argv[]) F: Q" t& V* c; A7 j3 a
{
: m) r" y9 U" }, C2 C" }1 T/ }- b FILE *fp;2 Q5 O# I7 K# E1 Y6 m
char ch;/ f3 P+ E5 |0 m3 v2 m' ?) }
) w4 h, `+ x, w% N
if((fp=fopen("test","r"))==NULL) {$ j; \3 m4 I3 @9 a8 k3 F* M
printf("Cannot open file.\n");
' l, r$ r& m9 T. {1 N3 _ exit(1);
0 |1 Q4 S6 L( w }
, q) ]+ g, Y7 O2 i ? j6 B) F/ w# O0 g }- _% c5 S
while((ch=fgetc(fp)) != EOF) {
e4 C7 I/ s; v0 a9 u7 N# Y( v printf("%c", ch); \6 ^2 G7 ^9 _
}! o6 S( S& N( p+ n, C& A0 o {+ r
fclose(fp);- J- C0 v: j8 r
& {" Z* x/ W: [. T# \; l# F
return 0;
% g' Q8 I% F6 q8 D" Q }
' H# Z3 b5 K+ H: P0 V6 @
) d; B; J' r1 q8 f 下面给出另外一个例子:
, U6 A6 D1 U# V$ @- Z4 B) e! s
' o' a) W1 W$ ?0 e& X7 Z" _: G#include <string.h>
; _' p/ y0 e. m) ~# k8 F/ M; R #include <stdio.h>* x# j$ J2 K: z7 T& M- J; x
#include <conio.h>
, ~9 n; B' p/ ~: r' J ( b% c0 G* w$ d7 \6 b$ h v- s
7 L j) p; A9 X- e7 _
int main(void)9 T% s: q% o- K7 H+ M
{4 @& F. `8 I7 C- M2 B' }* }
FILE *fp;
( }. u3 o+ P `& P \$ _$ U char string[] = "This is a test"; : i5 T: L5 K8 p
char ch; 5 Z1 Q- C* g; E
/* 以读写方式打开一个名为test.txt的文件 */
- m/ g" a& z7 f; c6 q. ] fp = fopen("test.txt", "w+"); : `9 F* \- {7 r
/* 向文件中写入字符串string */. Q4 y" A0 ?) Y! s- K
fwrite(string, strlen(string), 1, fp); - v. x- f* ~. I& W
/* 将fp指针指向文件首 */$ @# u* P. }" Z- Z) U
fseek(fp, 0, SEEK_SET); ' ] M5 t( g3 K+ \
do ! A0 U2 U$ w& ~( l$ }# H8 f
{ T7 \ S$ ~' `% I" c
/* 从文件中读一个字符 */
; P5 q7 s: C8 A b* [0 p2 o$ F ch = fgetc(fp);
! e+ C% X- v3 Q1 ~( R /* 显示该字符 */) X& W) h4 a5 x: T2 K
putch(ch);
2 Z% ^. d) Q( c" h$ p } while (ch != EOF);
( \7 B; S2 k4 Z. x+ | fclose(fp); % N$ K4 s, |9 U& R5 y
return 0; 9 {1 O/ j& _3 S$ {
}2 g2 K; E& D$ P4 S
( l. Q- L0 i0 h! |& m: d( F% s# K
例程说明:$ F9 d. j" F9 k+ |2 g& x, A2 I9 i
' O' B0 P% {# G2 `+ q
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
0 }/ i+ T# L0 ?. o9 }+ e& U; A0 W% `1 x( z% t8 A; `
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。 Z3 d2 k5 ]: q2 _& V8 F
8 P: X/ O+ m- J: E
(3)最后的运行结果是在屏幕上打印出This is a test字符串。 |
zan
|