QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 20056|回复: 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头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置。8 B2 h4 n! c, V0 d# C

    ( @5 F' O1 _  h  o. G函数原型:int fgetc(FILE *fp);6 x  q6 b! b4 p) S  I
    : {, D/ Q  t5 ~! t  W( B
    函数功能:从流中读取字符,即从fp所指定的文件中取得下一个字符。这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。这样编成时,程序员就不用再对fp控制了。这种功能在许多读写函数中都有体现。8 i) r" c" N, S% K

    ( ?" }+ s* \3 q! ?9 L& `返回值:返回所得到的字符;若读入错误,返回EOF。
    3 U% M$ F9 u4 \" `1 O
    ; N0 x# o0 R% d下面用一个具体的例子来说明:
    6 K/ S; F$ n  ~0 ]- V+ |) z; q/ X0 @) w8 ?8 |9 B
      #include <stdio.h>
    ( R9 [* f* O. H4 |& W  #include <stdlib.h>- k3 Z# W$ h0 z

    4 w+ q* E$ u- {8 _  int main(int argc, char *argv[])
    9 r4 ]. A: D2 H' k  {6 p8 P$ }9 \$ t- x3 k3 f1 g
        FILE *fp;
    . y  O! l7 G/ k  o    char ch;( a, s% Y3 t# s- Q+ h/ n

    & r  O- T9 J# v- {1 B! `    if((fp=fopen("test","r"))==NULL) {
    6 ^5 |' w7 p7 f5 u6 f% W9 w      printf("Cannot open file.\n");
    * q; b; l; Y4 b3 L8 W      exit(1);
    ) Z; k; v1 g" P: c2 U, y    }9 r1 |* Z8 M2 e% U& Q8 q
    7 {% X7 h5 X- {: }# S; B
        while((ch=fgetc(fp)) != EOF) {  l. j/ r9 E8 \9 k9 D6 B( l- O
          printf("%c", ch);
    # S$ }" F+ M) A7 I# S    }
    ) c  y0 ^/ i% @    fclose(fp);
    & s% F* j0 K9 P3 _+ L- {/ O* U# p
        return 0;  Q0 h, x; z, ?- c( j, R! d$ P: z- K$ f
      }
    " y, ?' _1 b9 Q$ {4 e8 n& W$ G) D2 E# M, C% H6 J
    下面给出另外一个例子:8 P/ h$ X! k: J7 g! D* q. y

    % Y: [; X* D! |5 R3 O. k  W6 @#include <string.h>1 P- p$ G5 |, |
            #include <stdio.h>- @& R( E" x( n$ G9 \
           #include <conio.h>
    3 \0 K3 K1 }1 H # e3 t4 b0 g( ?& B

    9 z7 o  t* @5 C1 T; Z7 i9 p* Rint main(void)! ]. H# k) e, A. [1 ?
           {
    ! w9 T* A9 {2 \* Q! Y+ P. U              FILE *fp; 0 r$ u+ q6 \7 A4 d/ J
                  char string[] = "This is a test"; # M4 z9 h( H( O
              char ch; # a5 j4 y/ n2 Z
              /* 以读写方式打开一个名为test.txt的文件 */1 F+ H6 r6 o3 U6 Q% q5 f
              fp = fopen("test.txt", "w+"); 5 Q0 C) w: Y% Y  w2 ~  M+ v
              /* 向文件中写入字符串string */. m9 B# _$ L* s$ E5 d
              fwrite(string, strlen(string), 1, fp); : @3 \* D) @; e( N  A5 h
              /* 将fp指针指向文件首 */" g) h7 f) b8 Q5 y5 z$ E! z
              fseek(fp, 0, SEEK_SET);
    * c# W* q, r6 D2 Q1 l          do
    / `( p' a. v6 O1 R3 ]& h1 v          { ' e7 M6 s/ r5 ^9 e& d) t
                        /* 从文件中读一个字符 */
    9 n, l$ U5 G, a! D' l* ^# m1 X% v                    ch = fgetc(fp);
      a$ S  q# z; Q- B  z# v3 @/ [                    /* 显示该字符 */
    ( k8 D% @3 z! l; E. [. I                    putch(ch);   ]8 N4 v7 G- B$ a3 h
              } while (ch != EOF); - U+ V; N' O+ i" t8 h
              fclose(fp);
    ! \/ x8 [0 F9 s, E3 J- ]1 a          return 0; 2 z  b4 x" }5 L; |6 G
           }
    3 ?9 y1 s: V) C  V. n6 m/ q
    1 H9 j5 _& [& ]" }7 e6 m# P  E例程说明:5 S) q/ S" @. ~- Y
    : G4 D, `9 @2 I8 _
    (1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。# Q+ U* M+ q5 e
    : \9 z' [% D, f8 q5 A
    (2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch 来接受读出的字符。
    & Q7 D5 B, l! t" Y+ u/ ?$ V7 |7 l% W: M( b
    (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 15:40 , Processed in 0.423493 second(s), 54 queries .

    回顶部