QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20170|回复: 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
    ; S& B& ?( s' M7 E
      {" y* [7 c  I函数原型:int fgetc(FILE *fp);% h$ K, l( Q- f) _. E0 d2 n. _
    8 J3 s$ O& |9 G1 z. c8 ^
    函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
    * e. W+ f2 {+ ~  I3 i7 E6 q- M& F3 ~# L0 L: @% u3 S" U3 S
    返回值:返回所得到的字符;若读入错误,返回EOF。
    7 J  U  v/ N" S: z1 x, B, v* S: h5 X- F1 z4 K8 i
    下面用一个具体的例子来说明:
    , s! ~. ^7 f4 o2 s: v
    ' r; R% p% W* m, V0 L  #include <stdio.h>
    - B; @% b! w1 ~+ }  #include <stdlib.h>% z0 X7 t& A3 {% O6 C

    8 s; U2 Z# E9 _( I, p5 l& ^  int main(int argc, char *argv[])) V1 a; }( W( }3 K% h
      {7 w# Q+ h  |) O. d, J9 J
        FILE *fp;& F" A7 I* _. l* ?* [2 @/ O0 y
        char ch;
    8 M: Q; H- G1 d! Z: t5 F5 P, V% s$ I/ x  `. P5 ?
        if((fp=fopen("test","r"))==NULL) {
    ' B, g% O2 s. @6 H4 j! S, Y) x6 q      printf("Cannot open file.\n");! ?( ^/ D, D2 P, ]
          exit(1);
    4 D: [7 G, z5 a/ X  F; B- W6 S0 p    }
    1 J6 @6 c. S  J! B' k
    4 V: E: z1 G' S* C* a    while((ch=fgetc(fp)) != EOF) {) c* L& x  X6 ^3 W; K
          printf("%c", ch);
    " K. {& ^6 a9 Y    }5 G# H) i2 c$ b" H
        fclose(fp);4 J2 Y# r! Q. ]; G& X; r

    . p6 R9 f! E1 d; A7 v$ D    return 0;  B8 I3 k! k4 ?; M% c. Z4 Z
      }
    ; S) d  t/ U( t1 R( W7 c9 W) p4 V, x- i1 P5 z8 q- b0 E& T
    下面给出另外一个例子:
    0 C5 R. h0 O% G5 H; i) Z8 h  Z* ?# l/ }( Y1 |' b  [( S( p" W; z6 X
    #include <string.h>
    9 M$ ]) j3 v: s8 f        #include <stdio.h>/ }' \4 k3 ^& c, E, T4 b
           #include <conio.h>
    " C8 b8 Z* p$ T1 c8 W
    9 S& o5 u: q( G7 i
    9 ^0 j/ }$ K, y" ^3 I4 }int main(void)5 i7 u! w; _( g& I0 {7 h
           {; _7 I7 s) j' g6 T, O' M. j
                  FILE *fp;
    5 S) \* F) m6 _: E( P              char string[] = "This is a test"; 0 m- W9 X' i, a& k: C! @
              char ch;
    & y( _$ _; C, Q1 {, F1 k0 t, t, p1 k4 ^          /* 以读写方式打开一个名为test.txt的文件 */& `+ W  p& N$ G4 C4 Y& i2 F4 F
              fp = fopen("test.txt", "w+"); 2 [0 \8 R/ U$ V) K2 i$ u' l* R
              /* 向文件中写入字符串string */
    4 J; I& ^% I, C! a1 o          fwrite(string, strlen(string), 1, fp);
    # [( P4 E" P& p0 X* k+ g4 t& ]$ f4 S, W          /* 将fp指针指向文件首 */
    8 w: F& t& V( i          fseek(fp, 0, SEEK_SET);
    2 }: g2 n7 x& u% a          do
    ' j! c0 R. s2 n6 ]          { 2 k: E) m7 r$ O) O7 A3 v6 [+ c
                        /* 从文件中读一个字符 */% @1 s2 k* o& g3 l
                        ch = fgetc(fp);
    / R9 g2 ]4 Q; W, D9 ?3 |                    /* 显示该字符 */
    3 J9 {* t8 f0 E$ q8 t' o. [7 ]                    putch(ch);
    - B4 i9 d& c& f0 n- x  E' w          } while (ch != EOF);
    : @$ s- A7 n2 e          fclose(fp); 8 L* t, \; [: s  g! I5 I- R" y
              return 0;
      {1 _, J0 T( T2 h' L  Y       }
    # Y$ v9 V6 o; W, ^: L4 Q
    ' [: I& S0 [: S! _- L例程说明:
    0 @8 k1 _  a. [0 a, W2 j) {  U
    9 _% I6 H! }1 p: F3 J8 u# w(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
    ) ~2 l' g5 H2 T, g; ^' W5 R. `5 E$ H5 W
    (2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。2 }" j0 F5 U0 n' a8 y# |' _) f
    " S- j! @# f' [. O  }  X! J1 T
    (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-9-3 06:54 , Processed in 0.450584 second(s), 55 queries .

    回顶部