QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20168|回复: 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。
    ' B7 L+ _! e% F5 Y) P3 {4 G) _- _* \1 o! r7 K
    函数原型:int fgetc(FILE *fp);$ X& R# }) w6 K9 V" A3 D
    ' S. W9 i# \% U9 g# n% O
    函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。- l9 I  l+ o! L6 L
    * Y- g! |( s/ t* n/ k
    返回值:返回所得到的字符;若读入错误,返回EOF。
    ' h4 {8 W4 M' _$ y. A# ~/ h+ H
    . \! e4 z8 D5 `- N下面用一个具体的例子来说明:
    3 r2 @: z3 Z4 f" r, q: y  t, v) S$ y0 I/ a
      #include <stdio.h>
    4 d  M3 [- R- J; ~. o9 g% y  #include <stdlib.h>$ i: l' \: x# ?& s4 I9 O

    ; ?9 x# z. H: |& @% w0 ^- L  int main(int argc, char *argv[])9 _7 X) y# e; s! E+ f  e
      {
    0 ^. X/ \* s: \8 t3 v+ w& b; ]    FILE *fp;
    ' W" d3 y& W0 k    char ch;: k& f) L4 Z% @& z% w- i+ {% o
    / M( O! x4 A* s( X: Y/ l
        if((fp=fopen("test","r"))==NULL) {: n+ D% l3 [9 L, w
          printf("Cannot open file.\n");* e- A9 {# G, d  q: m
          exit(1);5 v. c2 g0 @# W$ g# G' S
        }
    : T3 A  d! W& z7 I& U( ~% z: I3 n# m. n/ N
        while((ch=fgetc(fp)) != EOF) {
    0 ^9 ]% U" b  u: U1 E! l      printf("%c", ch);! M3 P$ S5 P4 c, T0 \6 N+ K" @% N
        }6 Y8 j0 ?' V7 V/ l! s6 r1 C' J
        fclose(fp);1 l: @; }% O, Z0 h2 Y

    3 V! B0 w6 d4 W/ H    return 0;
    ; o) P/ J/ k; O* p) d& ]  }
    ) Q2 A* D: D1 }8 `: k' J# L
    ( d. k, [* q1 w! j: |' V 下面给出另外一个例子:- ?8 T" \% W2 v. O- Y4 R7 ^

    1 J2 E3 `1 l/ e8 H# {7 O#include <string.h># N) _5 G4 j+ X$ d
            #include <stdio.h>+ r# k9 k7 O$ |2 K+ w+ l$ ~
           #include <conio.h>- P6 m6 D8 R4 Z0 R. @7 F, z

    + E; y0 g! p' [
    9 l( G' i, j' a  ^+ H; l/ p* Z" Vint main(void)
    3 S/ N# A2 l  V7 s5 E& H, u       {
    : D6 r0 O5 _' y0 Q/ U% V8 Z              FILE *fp;
    ; c2 L2 j+ S4 j3 N4 y              char string[] = "This is a test";
      d( v" k/ b# r' P7 k          char ch; - \- U, x0 W3 J/ F1 B- h
              /* 以读写方式打开一个名为test.txt的文件 */- z7 A/ P7 `0 D
              fp = fopen("test.txt", "w+"); + }4 w4 M; @3 ], L
              /* 向文件中写入字符串string */9 X7 ~1 k5 Q/ ~
              fwrite(string, strlen(string), 1, fp);
    ( n& j. O0 g( V2 o; N3 d1 V          /* 将fp指针指向文件首 */) x" O0 Q3 ]% i. V9 \7 Y
              fseek(fp, 0, SEEK_SET); ' ?, {2 S2 ]0 G4 a
              do   I1 d2 z2 j, x8 e8 A8 {
              {
    8 @" }2 N* u" G5 G4 t6 r& Y7 D& l+ Y                    /* 从文件中读一个字符 */( L8 G' u  K6 P1 S) J
                        ch = fgetc(fp);
    0 ]2 P; d8 L/ Q  U- M6 K2 _0 k2 ]" i                    /* 显示该字符 */
    6 a+ v8 H8 _1 u                    putch(ch);
    9 H$ A; O' C6 D& L$ h: T$ e          } while (ch != EOF);
    0 [9 F4 f0 @: @5 R          fclose(fp);
    ! |4 [& b2 M* U! R9 d          return 0;
    ! f- K0 W0 p1 X0 G/ _& a       }/ j: [9 T7 H! H# K  V9 h, B/ o

    7 Y8 D8 Y6 @: |, ?) P例程说明:
    : I" d' `( q9 c" a% R, B$ I5 v5 |; ?' }0 @: P6 |+ u8 p1 @
    (1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
    : o) q- \! X% |& t% j4 O& J* e1 O. h0 i" F+ B
    (2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。1 P2 @6 K; v8 W0 C" w

    4 r: Q8 ?/ |* x! `(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 04:45 , Processed in 0.534692 second(s), 53 queries .

    回顶部