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 ...
随机推荐
- win7下用mklink命令解决delphiXE系列占用C盘空间的问题
DelphiXE从2010以后, 安装程序安装完成后都会在ProgramData目录里复制一份安装程序的备份, 随着版本升级安装包越来越大, 占用C盘的空间也就越来越大 虽然可以通过删除的方式删掉, ...
- .NET 框架基本原理透析⑴
.NET框架的核心便是通用语言运行时(CLR),顾名思义它是一个可被各种不同的编程语言所使用的运行时.CLR的很多特性可用于所有面向它的编程语言.比如,如果CLR用异常来报告错误,那么所有面向它的语言 ...
- NPOI操作excel之读取excel数据
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 一.下载引用 去NPOI官网http://npoi.codeplex. ...
- Windows Server 2008R2服务器安装及设置教程
第一篇:系统安装与设置 前言本安装及设置教程适用于使用Windows2008R2为操作系统的服务器,目的是让服务器实现下列环境.语言脚本环境:ASP.ASP.Net1.1.ASP.Net2.0.ASP ...
- CentOS6修改主机名(hostname)及 修改/etc/hosts 文件,增加ip和hostname的映射关系(转)
CentOS修改主机名(hostname) 需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到root用户. ...
- Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份
这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...
- 大数的乘法(C++)
题目:POJ 2398 Bull Math Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13410 Accepted: ...
- elasticsearch基础
elastic使用lucene建立索引的步骤中,需要文件系统缓存需要同步到磁盘上.(多个segment->commit文件来维护) 当建立历史数据时,并不要求太高的实时性时,可以减小(默认1s) ...
- Android MimeType的用法和几种类型
关于MIME TYPE描述 多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII ...
- debuggee python
my_debugger_defines.py #encoding:utf-8 from ctypes import * from sys import version as py_ver # In p ...