描述

C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

声明

下面是 fgetc() 函数的声明。

int fgetc(FILE *stream)

参数

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。

返回值

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

实例

下面的实例演示了 fgetc() 函数的用法。

#include <stdio.h>int main ()
{FILE *fp;int c;int n = 0;fp = fopen("file.txt","r");if(fp == NULL) {perror("打开文件时发生错误");return(-1);}do{c = fgetc(fp);if( feof(fp) ){break ;}printf("%c", c);}while(1);fclose(fp);return(0);
}

假设我们有一个文本文件 file.txt,它的内容如下。文件将作为实例中的输入:

We are in 2014

让我们编译并运行上面的程序,这将产生以下结果:

We are in 2014

描述

C 库函数 int getc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

声明

下面是 getc() 函数的声明。

int getc(FILE *stream)

参数

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。

返回值

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

实例

下面的实例演示了 getc() 函数的用法。

#include<stdio.h>int main()
{char c;printf("请输入字符:");c = getc(stdin);printf("输入的字符:");putc(c, stdout);return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

请输入字符:a
输入的字符:a

描述

C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。

声明

下面是 strcat() 函数的声明。

char *strcat(char *dest, const char *src)

参数

  • dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
  • src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。

返回值

该函数返回一个指向最终的目标字符串 dest 的指针。

实例

下面的实例演示了 strcat() 函数的用法。

#include <stdio.h>
#include <string.h>int main ()
{char src[50], dest[50];strcpy(src,  "This is source");strcpy(dest, "This is destination");strcat(dest, src);printf("最终的目标字符串: |%s|", dest);return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

最终的目标字符串: |This is destinationThis is source|

描述

C 库函数 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。

声明

下面是 fwrite() 函数的声明。

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

参数

  • ptr -- 这是指向要被写入的元素数组的指针。
  • size -- 这是要被写入的每个元素的大小,以字节为单位。
  • nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。

返回值

如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象时一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。

实例

下面的实例演示了 fwrite() 函数的用法。

#include<stdio.h>int main ()
{FILE *fp;char str[] = "This is runoob.com";fp = fopen( "file.txt" , "w" );fwrite(str , 1 , sizeof(str) , fp );fclose(fp);return(0);
}

让我们编译并运行上面的程序,这将创建一个文件 file.txt,它的内容如下:

This is runoob.com

现在让我们使用下面的程序查看上面文件的内容:

#include <stdio.h>int main ()
{FILE *fp;int c;fp = fopen("file.txt","r");while(1){c = fgetc(fp);if( feof(fp) ){break ;}printf("%c", c);}fclose(fp);return(0);
}

fscanf()函数(有点像正则表达式):

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。

用 法:int fscanf(FILE *stream, char *format,[argument...]);

int fscanf(文件指针,格式字符串,输入列表);

  for example:

  FILE*fp;

  chara[10];

  intb;

  doublec;

  fscanf(fp,"%s%d%lf",a,&b,&c)

  返回值:整型,数值等于[argument...]的个数

其中的format就是相当于正则表达式中的格式,即用什么样的格式来分隔文件中的信息。光说不好理解,一下用一个例子来说明具体怎么用:

首先我有一个data。txt的文件里面的数据格式如下:

2,50,41,w,20.585828

4,52,51,r,52.012547

.........................

许多条类似的记录,都是以,来分隔的

.......................

我实现的功能就是把上面文件中的数据的五个字段赋值给相应的五个变量,并且输出这些变量的值。实现的程序如下:

#include<stdio.h>
#include<stdlib.h>

int main()
{
  int fd;
  long dev;
  long offset;
  long length;
  char ch;
  double ts=0.000000;
  if((fd=fopen("/home/haixian/ceshi/data.txt","r"))<0)
   {
     printf("open the file is error!\n");
     exit(0);
   }
  lseek(fd,0,SEEK_SET);
  
  
  while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts))
  {在这里就是第二个参数指定分隔参数的格式,在这里使用的是,来分隔。这样就很容易的获取了记录的各个字段的值并不需要自己编写函数来进行解析什么的。
     printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts);
  }
close(fd);
return 0;
}

getc和fgetc区别相关推荐

  1. getc与fgetc的区别

    从apue上, 我们学到, fgetc一定是函数, 而getc可能由宏来实现(但不一定). 这就是两者的差别, 我们先来看看VC++6.0中的实现吧: #include <stdio.h> ...

  2. fgetc(),getc(),getchar()的用法

    fgetc()和getc()用法是相同的,没有任何区别,getc()是宏定义函数,都是从流中读取一个字符. 从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符. 在C语 ...

  3. c语言gets,getc,C语言的getc()函数和gets()函数的使用对比

    C语言getc()函数:从流中读取字符头文件: #include 函数getc()用于从流中取字符,其原型如下: int getc(FILE *stream); [参数]参数*steam为要从中读取字 ...

  4. C++ Reference: Standard C++ Library reference: C Library: cstdio: getc

    C++官网参考链接:https://cplusplus.com/reference/cstdio/getc/ 函数  <cstdio> getc int getc ( FILE * str ...

  5. c语言gets,getc,C++_C语言的getc()函数和gets()函数的使用对比,C语言getc()函数:从流中读取字 - phpStudy...

    C语言的getc()函数和gets()函数的使用对比 C语言getc()函数:从流中读取字符头文件: #include 函数getc()用于从流中取字符,其原型如下: int getc(FILE *s ...

  6. c语言gets,getc,对比C语言中getc()函数和ungetc()函数的使用

    C语言getc()函数:从流中读取字符头文件: #include 函数getc()用于从流中取字符,其原型如下: int getc(FILE *stream); [参数]参数*steam为要从中读取字 ...

  7. C语言再学习 -- 输入/输出

    一.缓冲区 输入字符的立即回显是非缓冲或直接输入的一个实例,它表示你说键入的字符被收集并存储在一个被成为缓冲区的临时存储区域中.按下回车可使你所键入的字符块对程序变成可用. 为什么需要缓冲区?首先,将 ...

  8. Linux 标准I/O函数库

    标准I/O函数库: C标准库提供了文件的标准 I/O 函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案.标准I/O库使 用简单,与系统调用I/O相似,也包括打开.读写.关闭这些 ...

  9. 【总结】C语言实用算法系列之知识点梳理_附学生管理系统各模块代码

    1.内存四区特点 a)全局区变量空间缺省每个字节为00,栈空间缺省是cc,堆缺省是cd b)堆.全局区(静态区).字符串常量区,与栈区空间的位置距离很大,栈区访问速度可能最快: 2.C语言与C++编译 ...

  10. linux中流设备_Linux中的标准文件I/O流

    1.fopen 表头文件 include 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路 ...

最新文章

  1. python脚本编写_【PyQGIS】编写用于处理框架(QGIS3)的Python脚本
  2. pthread_cond_wait()函数的详解
  3. MDT2010新功能(15)——完成部署后操作
  4. MySQL删除外键约束
  5. 制作404页面的重要性
  6. 休眠事实:访存策略的重要性
  7. java map clone_Java中HashMap的clone()方法: java.util.HashMap.clone() - Break易站
  8. Centos 6.5安装MySQL-python
  9. open表和closed表_011 Ruby 多Word表写入Excel
  10. [转]win系统下nodejs安装及环境配置
  11. centos7 安装java和tomcat9
  12. html纵向固定导航菜单代码,CSS3单页面垂直固定导航
  13. 使用OctreeQuantizer提高gdi+绘图质量
  14. 类似华容道一类搜索中,状态的Hash方法(转)
  15. zabbix通过UNIXODBC连接数据库
  16. MySQL优化三之MySQL配置
  17. 浏览器userAgent大全
  18. 几种常用的服务器认证机制
  19. 趣味计算机专业比赛,你hua我猜 以梦为马——计算机科学系第三届你画我猜趣味比赛...
  20. 无废话ExtJs 入门教程七[登陆窗体Demo:Login]

热门文章

  1. 安岷老师 精益生产管理专家
  2. 关于 “总机服务” 新增功能来电弹屏的功能说明
  3. 岭回归(Ridge Regression)、OLS和吉洪诺夫正则化(Тихонов regularization)
  4. 诚之和:年轻人的尽头,是回老家买房吗?
  5. 1.CPU体系架构-RISC指令集和CISC指令集
  6. 前端智能化实践——可微编程
  7. 夏威夷大学计算机专业排名,夏威夷大学(美国夏威夷大学排名)
  8. python解析sql字段血缘_SQL血缘关系分析
  9. JDBC bug : You must configure either the server or JDBC driver
  10. 一转眼,波士顿动力 Atlas 机器人又会过独木桥了!