QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20091|回复: 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。! H; ^6 C  V' c3 S. T

    8 C7 K' q; c4 s! G8 V0 [( X8 ?函数原型:int fgetc(FILE *fp);
    $ g' f" R, C% x  h- Y& f  f4 d. w  C/ J0 J# [) e5 v5 D
    函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。* m5 b: L0 M' \9 a! E0 t8 Y. h

    + q9 Y- F$ V  g' |% o/ p9 S返回值:返回所得到的字符;若读入错误,返回EOF。
    % r6 Q2 {, G+ C* R6 O9 }! H
    " o8 `  u8 r! i3 {" S1 d. Z下面用一个具体的例子来说明:
    / d# C! ~; J' o# U7 a, ^( ?3 k
      #include <stdio.h>- [% B' l/ k) ?" Y0 I; k; V6 t( ?2 s( t
      #include <stdlib.h>" p  V7 J6 C4 ]% O$ w% |
    3 `# y& E; [% |1 }
      int main(int argc, char *argv[])9 P7 T/ y" i, h. [& v- H5 U
      {
    3 J+ ]* C: [" j+ a, r1 K+ l    FILE *fp;
    3 E9 f: m7 M& L4 t6 z    char ch;
    ! t$ n  m+ N  l) f+ L
    : d9 o- D6 i8 W4 }$ H- e7 Y* k2 u    if((fp=fopen("test","r"))==NULL) {
    9 c  t4 F# ]3 _      printf("Cannot open file.\n");
    4 k* ~! j; D" f6 ]- ~# z8 v' B# ~7 g      exit(1);
    6 A# D0 Q+ Q  w9 g+ `    }
    & p# w0 K& t+ u8 x  I# t* {
    5 M9 E% l0 ]! i6 ]  [' e    while((ch=fgetc(fp)) != EOF) {6 ]4 E4 U# y$ J$ P2 H- X
          printf("%c", ch);
    & u2 g4 m  y9 b    }; h. t, ?& k) X0 E( J
        fclose(fp);4 l3 ?, L0 |$ z6 ]3 d$ D

    * {: N* s- I$ f' H* m6 V9 Q2 G6 P    return 0;
    4 B: W+ b) j; M' F  }  [4 h. g9 l: n) F( [0 N+ d  o. n; K# q+ q

    / }0 M. I' X# W  P4 L' x/ a 下面给出另外一个例子:6 ^2 F* \9 V* _3 u

    * k' ]( u( L2 C( ]. x. _' Z#include <string.h>3 ]; j: Z3 v0 o+ d8 U( [
            #include <stdio.h>1 ]+ s' `3 R  k4 w0 I
           #include <conio.h>  M: A& a1 a: t4 |1 k5 ^, Z
      e" p* `% e# X7 x( i* {; N
    ( P8 C- J* ]0 _
    int main(void)* P2 P. g9 {9 G4 j: N, j' W. c
           {4 h% v8 A1 V8 V% i$ L( v
                  FILE *fp;
    + s; [# j5 m) \) `: @& Y; N              char string[] = "This is a test";
    7 V1 \: o. b8 \2 s# s          char ch; 9 i+ V; I) l$ f# v
              /* 以读写方式打开一个名为test.txt的文件 */; l. I% D( U' \. A+ ^. U
              fp = fopen("test.txt", "w+"); + h& J2 Q- N, R/ r* Z
              /* 向文件中写入字符串string */9 F2 ]4 [# {' B; v, j3 H5 @% x+ n- n
              fwrite(string, strlen(string), 1, fp);
    ( Z1 ]2 _, {. X3 C2 f          /* 将fp指针指向文件首 */
    , v1 \9 K5 [4 _5 ^" i/ O          fseek(fp, 0, SEEK_SET);
    5 I$ b/ s6 G+ J5 h' X. e: q          do , e7 q, C, `2 k' ^* Q2 M+ i5 g
              {
    % A% o: O- P$ p; J+ @- m! m+ G                    /* 从文件中读一个字符 *// g9 y0 N! e. c' l: A: p2 L; t  S
                        ch = fgetc(fp);
    8 ~9 v/ j2 C* _' y- H                    /* 显示该字符 */
    % L- S. B0 ?7 B6 Q# h; p                    putch(ch); 0 t3 e2 w( a! {! @8 K
              } while (ch != EOF); 4 L* E3 v2 X8 F3 j) y
              fclose(fp); ; c+ v  C. q/ x8 }1 q
              return 0;
    % c( a. t5 [- B5 ?/ u       }( O& t' \5 T% U6 z0 B) t, f" f' q
    ( v) c% F* v# q5 d
    例程说明:, n) F/ d2 k  W4 ~: j9 Q
    1 P# ^; J+ B6 z6 F. w; ?4 G; x
    (1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。
    : n; [2 R( p0 h2 k6 ?
    ! e8 ]: E6 v" [* R(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
    5 b' n- P) k" g1 Z2 {3 `9 D/ L
    + j' L6 D# k4 D(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-6-3 13:19 , Processed in 0.410029 second(s), 53 queries .

    回顶部