QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20134|回复: 0
打印 上一主题 下一主题

C语言中fgetc()函数用法

[复制链接]
字体大小: 正常 放大

937

主题

117

听众

3万

积分

升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    跳转到指定楼层
    1#
    发表于 2013-7-24 10:16 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    该函数包含在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
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-18 21:09 , Processed in 0.847954 second(s), 55 queries .

    回顶部