数学建模社区-数学中国
标题:
C语言中fgetc()函数用法
[打印本页]
作者:
wangzheng3056
时间:
2013-7-24 10:16
标题:
C语言中fgetc()函数用法
该函数包含在C语言中的stdio.h头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
7 J9 A6 ?% Y0 L* {; J. `+ |1 w
; N. _4 X) _1 m) ^7 j- i
函数原型:int fgetc(FILE *fp);
9 a' W% I6 r4 d, f d6 Q
2 s+ @9 T+ k1 U: t/ W( `! k, ?
函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
4 f3 c% v, O# ? A9 _' A
; s/ u* V" @- L+ N$ t
返回值:返回所得到的字符;若读入错误,返回EOF。
8 {$ G& [( `, v
8 N. W9 x3 ~. p3 n, d, J( K
下面用一个具体的例子来说明:
+ e# z- N5 E2 m" F. \+ f& m
& Y4 \9 V, c% i* D$ w; U
#include <stdio.h>
. v# o& n# ? e# q
#include <stdlib.h>
$ y8 J0 E7 q+ Y/ g
2 R- Q1 K% \) t
int main(int argc, char *argv[])
5 _( C9 A5 W* ?' G+ g
{
! ^ a2 d( V8 m1 G
FILE *fp;
0 W; }8 h' ?9 S) H8 i s
char ch;
9 U& S2 T, U$ M6 B+ u* I
/ u- Q6 |8 s/ d* `
if((fp=fopen("test","r"))==NULL) {
) @, d( P' R3 [1 g( G, f+ C
printf("Cannot open file.\n");
& ^ v0 _5 D4 `" i* L+ F
exit(1);
& N9 h" F" F9 Z: e% K" V
}
, g; R7 W; A$ W" U; n8 z
* K5 ~9 Q0 y, _& o
while((ch=fgetc(fp)) != EOF) {
$ K0 E. z7 i# J* J
printf("%c", ch);
! s/ u9 `, F' ]# ~8 B3 `- E% e. |) j
}
0 O2 t u; Z6 \5 L; @7 k& P
fclose(fp);
5 X3 ]9 |( q& W4 H7 \9 t: _. C
9 @% m; c" J) V7 {( j+ }
return 0;
* K. o* ^) ]+ U& g: f( p" ?
}
) h1 |! d \# D! z
% b: W* s5 X8 L
下面给出另外一个例子:
7 j+ T3 v4 T X
4 [+ A A* W) }; G
#include <string.h>
" b3 ~" [8 B7 J1 N/ }" p
#include <stdio.h>
7 [, C2 k9 n' \
#include <conio.h>
K) w0 j: m! u, e+ C3 B' b
1 G; k$ d% }. N' O" q9 o2 W) [
6 E' b3 H/ Y6 \! h% h- g. ]
int main(void)
) ^* h) T x. R( L" T
{
# s" p, M3 @! \9 o6 b7 b/ y# @
FILE *fp;
[# ?" |4 ?& q9 y/ p/ y
char string[] = "This is a test";
6 `- o# b, M( O. j; D8 e
char ch;
6 K* y0 `0 y' n7 ], ^
/* 以读写方式打开一个名为test.txt的文件 */
5 ~. {" h7 u {7 {
fp = fopen("test.txt", "w+");
3 C0 p7 k' h' i" y3 w
/* 向文件中写入字符串string */
3 _ C1 U/ c& y( q% s
fwrite(string, strlen(string), 1, fp);
# A7 K& N8 u9 h+ X: T; K
/* 将fp指针指向文件首 */
3 q) u- Z2 Y3 u4 }$ [
fseek(fp, 0, SEEK_SET);
& y1 c1 t _6 H( x8 ?( e# n: T
do
4 m5 ~+ }% g3 S, ?) s" s
{
- [, x5 X- V% N5 g9 K" o+ u- X v
/* 从文件中读一个字符 */
: O6 v7 b/ Q; `' z0 J# a0 B
ch = fgetc(fp);
/ r! w# v& L5 a/ g
/* 显示该字符 */
" P! D% q, [# V: Y- g7 c- z9 z
putch(ch);
9 ?0 P# u- n4 K. C
} while (ch != EOF);
- k6 ]7 D1 M+ W w+ J
fclose(fp);
2 w/ p$ X: o* [/ b! h1 T
return 0;
! s( Y7 ?+ M* {9 G
}
1 N2 a7 W8 H& R/ }
0 u; l0 _! J; N: \( m
例程说明:
4 x. S) \; `2 ^1 Y9 ]+ w" {; [/ r
! G: {3 ]( O1 ~( O
(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
3 s6 a8 Z4 M7 z# o$ J& j
2 S; e: @+ L. p1 R" b" T
(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
( ~+ \" |( G3 x: z2 T: Y
) b; q* ?+ o, i$ _+ {
(3)最后的运行结果是在屏幕上打印出This is a test字符串。
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5