QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20062|回复: 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。' q5 W- o0 \- H1 @
    ; u$ E9 C& _" T
    函数原型:int fgetc(FILE *fp);
    4 ~4 L. {* C1 S% L8 P
    " \' _1 V/ `/ k9 D) G5 ]函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。
      }0 [( R8 S, R6 h' C& t7 q/ \( A' {, h) ~* u. ^* r& g- M
    返回值:返回所得到的字符;若读入错误,返回EOF。
    + f( k" E) J/ m, J" s# v% r. j6 O- M1 k5 c/ j
    下面用一个具体的例子来说明:
    5 O$ O6 U+ _$ W; x, T" u$ Q4 l# I, N4 Y& i- e7 D+ I
      #include <stdio.h>2 ~6 \$ }" ~# C6 P( o  ?3 J8 {
      #include <stdlib.h>
    " \& X: |% I% l# v! f6 e1 k1 y" k& @2 V
      int main(int argc, char *argv[])
    5 y1 V8 i" C* g( S. i6 P  {
    ) Q( F7 j+ {/ N2 ]) n# v6 m    FILE *fp;
    # y1 H& f6 a4 u& i! K    char ch;0 j& K9 n/ I0 y' s3 x

    ( E% X2 c6 ]* u% w0 z/ K. d    if((fp=fopen("test","r"))==NULL) {
    ; j& k) j( B2 u+ z      printf("Cannot open file.\n");
    + o6 u$ y" G- u8 }  U) y. b      exit(1);7 K( a: O' b1 A* C5 a
        }- ~$ X% x: R0 A/ g/ o

    / d3 E: w8 o* P    while((ch=fgetc(fp)) != EOF) {
    4 V; N, j3 t. H, B( t9 i3 y      printf("%c", ch);
    4 w5 L/ s* K, T! a8 X! L0 X+ Q7 [    }. y  T7 z- W3 ^' }' p& K
        fclose(fp);$ g& m& x6 h$ }2 N- V! M/ {

      G6 y7 y1 |/ h; [# O# g9 R7 m; s, @    return 0;' V, l0 l( S5 j
      }
    $ _8 |3 L' z7 \. b# E/ F+ x$ _1 D  T, Y/ V  g+ E
    下面给出另外一个例子:. y0 H5 _6 h# Z1 {9 `
    2 t5 ]; Z! K+ [5 V+ a0 |9 R
    #include <string.h>" B1 R) Z+ G/ \) Q3 [0 k2 E3 e% l* q
            #include <stdio.h>
    - X2 B; }2 G$ s! q6 r% u4 L       #include <conio.h>9 H1 q2 \/ U, |) v. Y# I
    8 B, h2 p6 S" G& [) m

    7 @+ s5 K+ L# b- k$ ~# c4 Sint main(void)- U1 L& i( V6 G2 c9 ?
           {  ~: i3 o1 Q- i) I" F
                  FILE *fp;
    9 m# c8 E, L" ^3 ]              char string[] = "This is a test";
    $ R3 e: |6 i$ R0 @          char ch;
    , K. N2 Z  c- ~0 W: c* X4 M          /* 以读写方式打开一个名为test.txt的文件 */
    - ?8 K) V% i- Z/ \$ W4 ~+ ]          fp = fopen("test.txt", "w+");
    9 t  o+ n. o5 G7 K; z! E7 }          /* 向文件中写入字符串string */
    + l% w$ |9 y, N  Q5 {% r          fwrite(string, strlen(string), 1, fp); $ e" Q8 p' h' e% q+ n  }
              /* 将fp指针指向文件首 */+ s: `8 P' }/ N- @6 e: \) x
              fseek(fp, 0, SEEK_SET);
    - P) t4 y  C0 J( T/ n! `          do
    4 y: A$ y7 K; @% N; u9 W          { % o* {) x6 l4 q: _7 o1 n
                        /* 从文件中读一个字符 */8 i9 q( w" I: L4 C8 H& r
                        ch = fgetc(fp);
    ( D: K2 U: F& T/ O                    /* 显示该字符 */
    + P! J  m0 h4 e. c9 m                    putch(ch);
    ! S' e$ t, D3 n, ^, W          } while (ch != EOF);
    & q' Q- n' |2 b          fclose(fp);
    8 k8 K! @1 h3 d! n: |! \. s6 a          return 0;
    ' O: K) x' @) L+ y/ _- H/ Q       }
    7 O/ Z0 E* w0 ^& d, s
    8 J* V% }9 _3 o0 l1 x. P! }. p; d- j. s  L" Z例程说明:
    4 P& U" W- C* g
    ) a- A+ R) G' ^0 q' c1 a(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。% Y- O+ P/ T2 ~# ~) k

    - {2 T8 w9 o' I. a  C- J, P- Q. u(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
    7 P: i5 @) u" j$ ^+ j/ W  U7 X- e% W: n( X! a  r. N  E
    (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-4-19 10:02 , Processed in 0.492274 second(s), 55 queries .

    回顶部