QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20053|回复: 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。! e- W$ V8 ^/ D+ A. r
    ( a. l) @& D9 U6 M5 W
    函数原型:int fgetc(FILE *fp);
    0 `; ?' R. G( |' P; z$ L2 E2 M  V6 i7 p0 y/ K0 k
    函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。0 {1 p9 _- D! _! f$ \" o% ~

    8 o! ^( t/ _! `. L" v- F) K返回值:返回所得到的字符;若读入错误,返回EOF。& R) e/ d6 P+ h( `+ s

    3 [2 g% _$ F' k- x下面用一个具体的例子来说明:
    ) x8 g1 I8 L8 M6 ~& H: r3 ?) R7 m7 x+ U5 Y
      #include <stdio.h>/ _; Z- {! X# R  @2 [+ j" S6 [( @
      #include <stdlib.h>% C$ V3 I! {# ^, e
    ; `: c1 O" Q' r
      int main(int argc, char *argv[])
    . d; t; b* E) q& `$ O' N/ i  {
    # W! i+ \* v2 c1 J% H9 ~* S    FILE *fp;' z; q4 t0 Y5 A" \  P, X
        char ch;, A1 u4 Y( ]# y. C, H# W

    3 p8 }; a7 E  ~& F! I) ]+ P+ b. M    if((fp=fopen("test","r"))==NULL) {
      ~2 G; G2 I% r1 I* t4 K6 g& P" s      printf("Cannot open file.\n");. S( `% o1 N" q' R
          exit(1);
    1 l- v5 Z3 ?$ S% L$ T' B; W: X  X    }3 R9 d& p- [6 X* H8 {! ~
    ; R1 z' ?& }% _7 m! X# O% S* R
        while((ch=fgetc(fp)) != EOF) {( y2 x+ x5 n# F  L: ]4 F8 |) g
          printf("%c", ch);
    * T2 r/ z# ^% J6 N- ^4 m' Y    }
    2 n4 v0 A$ p: Q- [    fclose(fp);
    3 T2 m4 w9 V! O; V9 J5 Y  Z7 |, @( P7 N5 n' O' j. i
        return 0;
    . F& Q  v0 V" e  }2 V7 @1 q1 i4 L0 [2 R9 g8 T4 \3 k

    3 A' ]* _. g* H" f 下面给出另外一个例子:1 O. `/ Z3 L9 B+ d0 F1 F

    7 s- c  o& K/ w9 n# l3 k1 K#include <string.h>
    0 ?# N! O6 u7 \; V$ Y" z5 l3 k        #include <stdio.h>
    3 z' s0 J) L& T       #include <conio.h>
    4 b* A5 _5 _& b% h& g* R9 E
    9 L: s8 E, M* F
    ; K6 Q8 i% {' X) `9 dint main(void); Q- H# A" }% H
           {' N6 V( E1 Q+ I: t6 M0 H: y
                  FILE *fp;
    ) {+ X$ B0 f8 i3 d( M; ^              char string[] = "This is a test";
    3 p% j* e- V6 |4 k1 w          char ch; + ~& D* f% ~  V+ f0 y1 \
              /* 以读写方式打开一个名为test.txt的文件 */; P+ o* F5 j) ^' m. j* d1 ^* R
              fp = fopen("test.txt", "w+");
    , r1 S# c  w8 e0 V1 p& Q" P/ X          /* 向文件中写入字符串string */0 O( H$ K' q: }: R$ S- M
              fwrite(string, strlen(string), 1, fp);
    , o$ Y& G8 P1 f1 l8 C          /* 将fp指针指向文件首 */. K) K$ I& [, ?3 \" h
              fseek(fp, 0, SEEK_SET); 7 q& N  `/ n$ N" f2 \. e
              do
    8 q6 E4 q" F9 E          { % e5 S  n0 y, ]2 p  n( h: F
                        /* 从文件中读一个字符 *// Y" }1 w9 h, e& p, w
                        ch = fgetc(fp);
    " B$ L% t6 m9 L8 o$ ?/ x                    /* 显示该字符 */& S- c" M! b$ N  S6 R+ l2 a
                        putch(ch);
    0 M8 X2 ]/ t" O# Q          } while (ch != EOF);
    " H/ x8 v  B5 T  |( [2 O: @% m  M! K          fclose(fp); ' v" g" q9 r0 q
              return 0; % {/ P& X3 q# T. }7 |) K/ i5 ^
           }+ M+ U$ [/ B6 a- `* `: t0 U+ W  {
    1 o: O; c! B7 k3 ^( B' ]
    例程说明:# S2 g) O& _7 Z+ o

    / S. v( Q" }$ u: {6 G9 \, o(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。& e, V: ], \: q+ t
    & T2 n6 `* [/ B& b; M' [& v9 O6 a: G
    (2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
    9 V2 K$ ^9 t9 o+ A
    7 L2 t7 H. |& |7 {# q(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-17 01:43 , Processed in 0.308338 second(s), 55 queries .

    回顶部