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

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. mysql组合索引顺序参考

    问题背景 : 当我们需要创建一个组合索引, 索引的顺序对于效率影响很大, 怎么确定索引的顺序; 解决方法 : 我们应该依据字段的全局基数和选择性, 而不是字段的某个具体的值来确定; 表结构 :  dc ...

  2. ExtJS4笔记 Data

    The data package is what loads and saves all of the data in your application and consists of 41 clas ...

  3. 《Linux内核分析》第一周 计算机是如何工作的?

    刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK ONE(2. ...

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

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

  5. LeetCode 3Sum Smaller

    原题链接在这里:https://leetcode.com/problems/3sum-smaller/ 题目: Given an array of n integers nums and a targ ...

  6. 能套用的tab栏切换

    效果: 在style.js文件里封装了一个Show函数,有4个参数,di(当前点击的按钮),num(按钮个数,也可以说是下面具体内容个数),divn(一个id前缀,这个例子里是ta,),active( ...

  7. paper 104: 彩色图像高速模糊的懒惰算法

    工程及源代码:快速模糊.rar                            图像模糊算法有很多种,我们最常见的就是均值模糊,即取一定半径内的像素值之平均值作为当前点的新的像素值,在一般的工业 ...

  8. sklearn 组合分类器

    组合分类器: 组合分类器有4种方法: (1)通过处理训练数据集.如baging  boosting (2)通过处理输入特征.如 Random forest (3)通过处理类标号.error_corre ...

  9. Linq join

    MXS&Vincene  ─╄OvЁ  &0000022─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  10. python核心编程学习记录之文件和输入输出