linux应用程序开发-文件编程-库函数
---恢复内容开始---
c库函数文件操作独立于具体的系统平台,可移植性较好。
库函数-创建和打开
FILE*fopen(const char*filename,const char*mode)
mode:打开模式
常见的打开模式:
r,rb:只读方式打开
w,wb: 只写方式打开,如果文件不存在,则创建该文件
a,ab:追加方式打开,如果文件不存在,则创建该文件
r+,r+b,rb+:读写方式打开
w+,w+b,wh+:读写方式打开,如果文件不存在,则创建该文件
a,a+b,ab+:读和追加方式打开,如果文件不存在,则创建该文件
b用于区分二进制文件和文本文件,这一点在DOS,window中区分,LINUX不区分二进制文件盒文本文件。
库函数-读
size_t fread(void*ptr,size_t size,size_t n,FILE *stream);
从stream指向的文件中读取n个字段,每个字段为size字节,并将读取的数据放入ptr所指的字符数组中,返回实际读取的字节数。
库函数-写
size_t fwrite(void*ptr,size_t size,size_t n,FILE *stream);
读字符:
int fgetc(FILE*stream);
---恢复内容结束---
c库函数文件操作独立于具体的系统平台,可移植性较好。
库函数-创建和打开
FILE*fopen(const char*filename,const char*mode)
mode:打开模式
常见的打开模式:
r,rb:只读方式打开
w,wb: 只写方式打开,如果文件不存在,则创建该文件
a,ab:追加方式打开,如果文件不存在,则创建该文件
r+,r+b,rb+:读写方式打开
w+,w+b,wh+:读写方式打开,如果文件不存在,则创建该文件
a,a+b,ab+:读和追加方式打开,如果文件不存在,则创建该文件
b用于区分二进制文件和文本文件,这一点在DOS,window中区分,LINUX不区分二进制文件盒文本文件。
读
size_t fread(void*ptr,size_t size,size_t n,file *stream);
写:
size_t fwrite(void*ptr,size_t size,size_t n,file *stream);
读字符
int fgetc(FILE*stream);
举例:
#include<stdio.h>
main()
{
FILE*fp;
char ch;
if((fp=fopen("c1.txt","rt"))==NULL)
{
printf("\nCannot open file strike any key exit");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOP)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
写字符
int fputs(inyt c,FILE*stream)
举例:
#include<stdio.h>
main()
{
FILE*fp;
char ch;
if((fp=fopen("string","w+"))==NULL)
{
printf("\nCannot open file ,strike any key exit");
getch();
exit(1);
}
printf("input a string:\n");
ch=fgetchar();
while(ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
printf("\n");
fclose(fp);
}
格式化读:
fscanf(FILE*stream,char*format[,argument...])
从一个流中格式化输入
#include<stdlib.h>
#include<stdio.h>
int mian(void)
{
int i;
printf("input an interger:");
if(fscanf(stdin,"%d",&i))
printf("The integer read was:%i\n",i);
}
格式化写:
fprintf(FILE*stream,char*format[,argument...])
格式化输出从到一个流中
#include<stdlib.h>
#include<process.h>
FILE*stream;
int mian(void)
{
int i=10;
double fp=1.5;
char s[]="this is a string";
char c='\n';
stream=fopen("fprintf.out",""w);
fprintf(stream,"%s%c",s,c);
fprintf(stream,"%d\n",i);
fprintf(stream,"%f\n",fp);
fclose(stream);
}
定位:
int fseek(FILE*stream,long offset,int whence);
whence:
SEEK_SET
SEEK_CUR
SEEK_END
路径获得:
char*getcwd(char*buffer,size_t size);
把路径copy到buffer中,buffer如果太小,返回-1;
创建目录:
int mkdir(char*dir,int mode);
0返回成功,-1表示出错。
linux应用程序开发-文件编程-库函数的更多相关文章
- linux应用程序开发-文件编程-系统调用方式
在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为 ...
- 《嵌入式linux应用程序开发标准教程》笔记——6.文件IO编程
前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应 ...
- 嵌入式Linux应用程序开发详解------(创建守护进程)
嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...
- Linux入门-程序开发
Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识, ...
- 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发
进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...
- 《嵌入式linux应用程序开发标准教程》笔记——9.多线程编程
线程是轻量级进程,创建线程的开销要比进程小得多,在大型程序中应用广泛. 9.1 线程概述 进程包含自己的代码.数据.堆栈.资源等等,创建和切换的开销比较大: 线程是轻量级的进程,调度的最小单元,同一个 ...
- Vs2012于Linux应用程序开发(2):图案
1.1 代码提示功能 在vs中开发中,Visual Assist是一个很优秀的插件,我们仍然能够使用它进行代码的分析,但它仅仅能支持vcxprojproject,因而我们选择对vcxproj的 ...
- 《嵌入式linux应用程序开发标准教程》笔记——8.进程间通信
, 8.1 概述 linux里使用较多的进程间通信方式: 管道,pipe和fifo,管道pipe没有实体文件,只能用于具有亲缘关系的进程间通信:有名管道 named pipe,也叫fifo,还允许无亲 ...
- Vs2012于Linux应用程序开发(4):公共财产的定义
在嵌入式开发流程.有些参数基本上不改变,比如编译主机IP,username,password等参数.我们用VS提供的属性管理器来保存这些參数. 打开属性管理器: watermark/2/text/aH ...
随机推荐
- 《UML大战需求分析》阅读笔记01
在刚学习软件开发的课程时,首先学习了UML设计,但只是学习了基本的语法,虽然在学期通过课堂练习进行了实践,但并没有真正理解其中作用.为了进一步的理解UML的用法,我阅读了<UML大战需求分析&g ...
- Box2D淌坑日记: 关节(Joint)和旋转关节(b2RevoluteJoint)
关节在Box2D的对象组织结构中,与b2Body(刚体)并列.因此两种对象都是由b2World创建并直接管理. 然而Joint有依赖于b2Body的地方,就是它的销毁:当关节所涉及到的刚体被销毁,关节 ...
- Thinking in Java——笔记(4)
Controlling Execution true and false Java doesn't allow you to use a number as a boolean. If you wan ...
- Android-Activity使用(2)
接着Android-Activity使用(1)实现页面跳转 一.在main_activity中添加按钮,注意 id的写法为"@+id/"+"id真正的名字" & ...
- nginx json 格式输出
log_format logstash_json '{ "@timestamp": "$time_local", ' ...
- cxf client在后台不通且chunk设置为false的时候不能在控制台输出请求日志
场景: 服务编排框架支持编排webservice服务.call webservice的client是基于cxf做的.为了使用服务编排的开发者调试与定位问题方便,需要将webservice的请求与响应报 ...
- leetcode 374
这个题目很简单,但是要注意细节和对题目的理解,一开始我把guess函数的作用理解错了,第一版代码长这样: int guessNumber(int n) { ; int high = n; while( ...
- 1.2 如何在visual studio 中建立C#程序
这一节简单介绍一下怎么在visual studio 2015中建立第一个C#程序,我使用的是2015版的visual studio,不同版本可能有一些差异,不过大体上是相同的,这些信息仅供新手参考,大 ...
- JQ 全选、全不选
$(document).ready(function() { $("#isalldebt").click(function() { if ($(this).attr("c ...
- html5,实例开发代码
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...