---恢复内容开始---

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应用程序开发-文件编程-库函数的更多相关文章

  1. linux应用程序开发-文件编程-系统调用方式

    在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为 ...

  2. 《嵌入式linux应用程序开发标准教程》笔记——6.文件IO编程

    前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应 ...

  3. 嵌入式Linux应用程序开发详解------(创建守护进程)

    嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...

  4. Linux入门-程序开发

    Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识, ...

  5. 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发

    进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...

  6. 《嵌入式linux应用程序开发标准教程》笔记——9.多线程编程

    线程是轻量级进程,创建线程的开销要比进程小得多,在大型程序中应用广泛. 9.1 线程概述 进程包含自己的代码.数据.堆栈.资源等等,创建和切换的开销比较大: 线程是轻量级的进程,调度的最小单元,同一个 ...

  7. Vs2012于Linux应用程序开发(2):图案

    1.1     代码提示功能 在vs中开发中,Visual Assist是一个很优秀的插件,我们仍然能够使用它进行代码的分析,但它仅仅能支持vcxprojproject,因而我们选择对vcxproj的 ...

  8. 《嵌入式linux应用程序开发标准教程》笔记——8.进程间通信

    , 8.1 概述 linux里使用较多的进程间通信方式: 管道,pipe和fifo,管道pipe没有实体文件,只能用于具有亲缘关系的进程间通信:有名管道 named pipe,也叫fifo,还允许无亲 ...

  9. Vs2012于Linux应用程序开发(4):公共财产的定义

    在嵌入式开发流程.有些参数基本上不改变,比如编译主机IP,username,password等参数.我们用VS提供的属性管理器来保存这些參数. 打开属性管理器: watermark/2/text/aH ...

随机推荐

  1. 【java基础学习】泛型

    泛型 1. 泛型类(声明的泛型类型静态方法不能使用) class Tools<T>{ private T t; public void set(T t){ this.t = t; } pu ...

  2. [daily]使用rdtsc指令,测量程序的运行速度 [转]

    原文地址:http://blog.chinaunix.net/uid-24774106-id-2779245.html 最近搞架构,一直在讨论.听人提到,自行科普了一下,先转发,mark.有机会深入学 ...

  3. Swift 懒加载(lazy) 和 Objective-C 懒加载的区别

    在程序设计中,我们经常会使用 懒加载 ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都会这样写 Objective-C - ( ...

  4. js注册验证提示!

    <script> var ifEmail =false; var ifPassword; function ainf() { var txtEnun=document.getElement ...

  5. 谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

    谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.ph ...

  6. Inside Flask - globals 全局变量(对象代理)

    Inside Flask - globals 全局变量(对象代理) 框架是一个容器,在框架内编程,一般是要遵守框架的约定和使用模式.通常这样的模式是 IoC,即由框架调用用户的代码,而不是用户调用框架 ...

  7. 20145320《Java程序设计》第四次实验报告

    20145320<Java程序设计>第四次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.26 15: ...

  8. S3C2440 裸机程序之音频

     mini2440之Main分析 2012-03-17 20:51:29 分类: 嵌入式 /****************************************************** ...

  9. Struts2自定义类型转换,和处理类型转换错误

    Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...

  10. 【转】C# Linq 交集、并集、差集、去重

    using System.Linq; List<string> ListA = new List<string>(); List<string> ListB = n ...