系统级程序设计第一课
第一课主要讲利用ubuntu 完成一些之前学过的文件操作,结合c语言来实现
利用的函数有
1 open函数
主要是打开文件;
int open(const char *pathname, int flags[, mode_t mode);
2 read函数
作用是读取已获得文件数据,需要函数unistd.h 形式如下
ssize_t read(int fd,void * buf,size_t count);
fd | 为从open或create函数返回的文件描述符,简单来说fd就是open一个文件后赋的值。 |
buf | 缓冲区,就是把文件中的内容按指定大小存在buf中后续进行输出 |
count | 最大读取的长度,即指定要读去数据的长度或者大小 |
我单
3.write函数
作用与read相似,都在一个函数库里面
ssize_t write(int fd, void *buf, size_t count);
4.lseek函数
都在一个库里
ssize_t write(int fd, off_t offset, int whence);
参数如下
fd: 从open或create函数返回的文件描述符
offset: 对文件偏移量的设置,参数可正可负
whence: 控制设置当前文件偏移量的方法
– whence = SEEK_SET: 文件偏移量被设置为offset
– whence = SEEK_CUR: 文件偏移量被设置为当前偏移量+offset
– whence = SEEK_END: 文件偏移量被设置为文件长度+offset
5.close 函数
int close(int fd);
成功返回1,反之-1
2.案例
使用open函数打开或创建一个文件,将文件清空,使用write函数在文件中写入数据,并使用read函数将数据读取并打印。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(){
int tempFd = 0;
char tempFileName[20] = "test.txt";
//Step 1. open the file.
tempFd = open(tempFileName, O_RDWR|O_EXCL|O_TRUNC, S_IRWXG);
if(tempFd == -1){
perror("file open error.\n");
exit(-1);
}//of if
//Step 2. write the data.
int tempLen = 0;
char tempBuf[100] = {0};
scanf("%s", tempBuf);
tempLen = strlen(tempBuf);
write(tempFd, tempBuf, tempLen);
close(tempFd);
//Step 3. read the file
tempFd = open(tempFileName, O_RDONLY);
if(tempFd == -1){
perror("file open error.\n");
exit(-1);
}//of if
off_t tempFileSize = 0;
tempFileSize = lseek(tempFd, 0, SEEK_END);
lseek(tempFd, 0, SEEK_SET);
while(lseek(tempFd, 0, SEEK_CUT)!= tempFileSize){
read(tempFd, tempBuf, 1024);
printf("%s\n", tempBuf);
}//of while
close(tempFd);
return 0;
}//of main
还存在问题
待解决
总结:本次课最大的收获就是规范代码格式和变量命名,以前写都没怎么注意这些,定义变量也是a,b字母之类的,容易弄混不好分辨,而且注释以后也得落实到位,另外就是对文件的读写加深了影响,也复习了c,还有一些小错误满满解决。
系统级程序设计第一课相关推荐
- 系统级程序设计第一课内容——Linux系统与操作 2022.5.2
系统级程序设计第一课内容--Linux系统与操作 文章目录 系统级程序设计第一课内容--Linux系统与操作 一.Linux文件系统与操作 二.文件操作 1.主要函数 2.open() 3.read( ...
- c语言程序设计第一课作业,C语言程序设计第一课答案.doc
第一章参考答案 1.3.1 思考: error C2199: syntax error : found 'int (' at global scope (was a declaration inten ...
- 系统级程序设计第二次作业
1 进程控制 fork() exec函数族 wait() exit() 1.1 创建进程 #include <unistd.h> pid_t fork(void); 功能:创建进程:函数执 ...
- 上海 |《PMCAFF产品经理第一课》报名倒计时手慢无,微博副总裁、丁香园、1号店、淘宝产品总监私房干货分享...
2016年PMCAFF产品经理第一课重磅首推--上海站.PMCAFF产品经理导师天团空降上海,原微博副总裁,淘宝移动初代产品,1号店产品总监.丁香园产品负责人,阿里巴巴中共铁军等一线团队亲授产品实操经 ...
- 上海 |《PMCAFF 产品经理第一课》全面提升,微博副总裁、丁香园、1号店、淘宝、阿里巴巴产品总监最强分享...
2016年PMCAFF产品经理第一课重磅首推--上海站.PMCAFF产品经理导师天团空降上海,原微博副总裁,淘宝移动初代产品,1号店产品总监.丁香园产品负责人,阿里巴巴中共铁军等一线团队亲授产品实操经 ...
- 吾爱破解培训第一课作业密码_如何实现您的第一个无密码登录系统
吾爱破解培训第一课作业密码 You may have heard that there are 360 Million Reasons to Destroy All Passwords and tha ...
- 中南大学计算机学院院长廖力清,第8期|计算机学院成功举行2019级新生开学典礼暨“院长第一课”...
原标题:第8期|计算机学院成功举行2019级新生开学典礼暨"院长第一课" 编写人生代码,书写无悔青春.为引导和帮助2019级本科新生尽快适应大学生活,树立新的奋斗目标,9月2日下午 ...
- 第一课 为什么要使用SS7信令系统?
第一课 为什么要使用SS7信令系统? 课程目的 了解传统一号信令系统,呼叫流程及其缺陷 了解SS7信令系统,呼叫流程及其优势 比较两种信令网的差别: 中继利用率方面的差别 信令方式方面的差别 呼叫建立 ...
- M3DGIS三维电子沙盘数字沙盘大数据人工智能模拟对抗推演系统开发教程视频第一课
M3DGIS开发培训视频第一课https://live.csdn.net/v/168403 该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658 而且该公用服务器带宽不 ...
最新文章
- ELECTRA 超过bert预训练NLP模型
- 生态伙伴 | 小鹅通企学院入驻飞书,助力企业一键打造自己的企业大学
- RDKit | 基于Murcko骨架聚类化合物库
- 开发人员不得不知的MySQL索引和查询优化
- jsTree插件简介(三)
- 《运营之光》-- 学习笔记(四)
- vmware虚拟机i copied it 和 i moved it的区别
- 浅谈 malloc 函数在单片机上的应用
- virtual box 静态ip设置
- 再次哀悼吧!最佳夸浏览器同步 Xmarks 宣布终止服务
- mini2440 -- TFTP方式下载u-boot
- 头插法和尾插法建立单链表
- python是高级语言还是低级语言_python和其他语言的比较
- PB函数大全(超全,解析很全面)
- 辐照度贴图的生成算法分析
- PHP 第三方登录学习笔记
- 15天精读掌握《高德纳:具体数学》 第3天 2019.5.29
- Linux 第四章-文件管理
- 几何代数(Geometric Algebra 也叫克利福德代数 Clifford Algebra)简介
- 行云管家荣膺《中国网络安全行业全景图(第九版)》收录