Linux系统编程之API(fputc、fget和feof)
1.函数fputc;
函数原型:
int fputc(int c, FILE *stream);
返回值:如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。
c -- 这是要被写入的字符。该字符以其对应的 int 值进行传递。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。
注意:该函数是一个字符一个字符的写进的,并不是一串一串的写,还有其实这个函数跟write是一样的,就是将字符写进文件的意思。
上代码:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>int main()
{FILE *fp;int data = 20;int i;int len;char *pstr = "hello world!";fp = fopen("./test.txt","w+");//int fputc(int c, FILE *stream);fputc(data,fp);len = strlen(pstr);for(i = 0;i < len;i++){fputc(*pstr,fp);pstr++;}fclose(fp);return 0;
}
代码里的第一个fputc是将整数data写进fp所指向的文件里的意思,第二个fputc函数是将字符串pstr写进文件里。
2.fgetc函数
函数原型:
int fgetc(FILE *stream);
返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
参数:stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
描述:C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。说白了就是相当于读取函数read,只不过这个函数也是一个一个字符的读取的,并不是一串字符串的方式读取。
3.feof函数
函数原型:
int feof(FILE *stream);
返回值:当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。(这个说的很官方),说白了就是还没到字符串结束的时候返回0值,当到了字符串的结束位置时返回一个非零值。
参数:stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
C 库函数 int feof(FILE *stream) 测试给定流 stream 的文件结束标识符。即测试文件字符串是否到了末尾。(没到返回0值,到了返回非零值)
直接上fgetc函数和feof函数的代码:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>int main()
{FILE *fp;char a;char *pstr = "hello world!!";fp = fopen("./test.txt","w+");fwrite(pstr,sizeof(char),strlen(pstr),fp);fseek(fp,0,SEEK_SET);while(!feof(fp)){a = fgetc(fp);printf("%c",a);}printf("\n");fclose(fp);return 0;
}
注意:while里的条件是!feof(),意思是取反的意思,因为feof还没到字符串末尾时是返回一个零值,到了字符串末尾时是返回一个非零值,取反之后就是还没到尾巴处就返回一个非零值,到了就返回一个零值,即while的条件为真时才往下执行。
学习笔记,仅供参考。
Linux系统编程之API(fputc、fget和feof)相关推荐
- linux常用ipc技术,LINUX系统编程之IPC
LINUX系统编程之IPC(Inter Processes Communication) 一.信号 1.信号的产生 软件中断,异步通信,ctrl+c,kill函数,kill命令,硬件异常(段错误),软 ...
- Linux系统编程之waitpid函数详解
5.1 为什么要进行进程资源的回收 当一个子进程退出之后,该进程能够回收自己的用户区的资源,但是不能回收内核空间区的PCB(process control block 进程控制块)资源. (即:子进程 ...
- Linux系统编程之Vim使用小技巧---代码自动对齐,智能提示
自动对齐:(gg=G) 在命令模式下(即非"插入"等编辑模式),先输入gg,这时候光标会移动到第一行第一个字符,然后按 "=" 号之后切换成大写,再按一下G,这 ...
- linux so_linger,linux系统编程之getsockopt/setsockopt 函数
最近看别人写的代码很多函数不知道啊,在研究分布式消息队列beanstalkd,遇到了很多东西.尤其是网络连接方面. 代码是这样的. setsockopt(fd, SOL_SOCKET, SO_REUS ...
- Linux系统编程一:时间和延时、gmtime和local函数返回相同
目录 1. 概述 2. 延时函数 3. 当前时间 3.1 时间调用函数 3.2 时间转换函数 4. gmtime和local函数返回相同 测试代码 1. 概述 前面的几篇文章Linux学习笔记一到七, ...
- Linux C高级编程——网络编程之API(5)
Linux C网络编程--API 宗旨:技术的学习是有限的,分享的精神的无限的. 一.基本socket函数 Linux系统是通过提供套接字(socket)来进行网络编程的.网络的so ...
- 什么是Linux的原生GUI API?
本文翻译自:What is Linux's native GUI API? I hope this doesn't come across as a stupid question but it's ...
- FFmpeg的远程视频监控系统编解码
FFmpeg的远程视频监控系统编解码 2013-05-07 22:29:32| 分类: 默认分类|举报|字号 订阅 FFmpeg的远程视频监控系统编解码 FFmpeg的远程视频监控系统编解码 ? 0 ...
- linux c编程之fcntl
fcntl可实现对指定文件描述符的各种操作,其函数原型如下: int fcntl(int fd, int cmd, ... /* arg */ ); 其中,操作类型由cmd决定.cmd可取如下值: F ...
最新文章
- Django 框架入门篇(安装与创建项目)
- python怎么把图片压缩_使用Python轻松批量压缩图片
- 【Linux】一步一步学Linux——touch命令(33)
- python中的matplotlib.pyplot_python matplotlib中axes与axis的区别?
- Domino下实现仿Google搜索提示效果
- 机器学习入门|线性回归(二)
- 威学一百_涨价通知丨威学一百VIP全年畅学卡价格即将上调!
- 如何在思科交换机上配置Telnet远程登录
- FreeMarker下拉列表选中值回显
- python学生成绩分析与预测
- 在微软工作有多舒服?
- OFDM载波间隔_OFDM之频域
- 利用CRISPR基因编辑高效靶向诱变玉米农作物/植物核糖蛋白复合物的研究
- 【css】使用 canvas 画一个圆、贝塞尔曲线画对话气泡
- 网络使用工具HttpWatch的使用方法
- K-means 算法实现二维数据聚类
- 最接近win7的Linux系统,Windows7Vs.Linux——操作系统大PK
- 音频特效生成与算法 1
- golang编辑器查看git哪一行是谁修改的,什么时候修改的方法
- SQL Server 数据库备份还原和数据恢复
热门文章
- 星巴克显示服务器发生异常,星巴克APP崩了怎么回事?什么时候恢复?星巴克APP网络异常怎么修复?...
- 通过100个单词掌握英语语法(十七)could
- 在测试VPN时候的惊天大坑,命令行查到的ip与百度搜索的ip不一致
- 上王者的正确姿势:OPPO R17 Pro王者定制版
- 徐州哪有教计算机编程的,太牛了!徐州这家青少年编程培训中心除了教编程,还教给孩子最宝贵的……...
- win10蓝牙开关不见了_dell的蓝牙出现问题了,不能连接
- mysql集群与分布式数据库_数据库集群与分布式系统的区别
- springboot球鞋商城毕业设计源码011229
- 如何禁用excel的保存和另存为选项
- FZU 1649 Prime number or not (大素数测试)