关于文件流的简单操作

2015.1.28
星期三 小雪
变量可以理解为内存
gcc -Wall 打开所有警告

指针数组:注意指针数组是以一个NULL指针结束的; c和指针 P105

给定一个指向以NULL结尾的指针列表的指针strings,在列表中的字符串查找一个特定的字符
#include <stdio.h>
#define TRUE 1
#define FALSE 0

int find_char(char **strings,char value)
{
char *string;
while((string = *strings++) != NULL)
{
while(*string != ‘\0‘)
{
if(*string++ == value)
{
return TRUE;
}
}
}
return FALSE;
}

用getc和putc将标准输入复制到标准输出:

int main()
{
int c;
while((c = getc(stdin)) != EOF)
{
if(putc(c,stdout) == EOF)
{
err_sys("output error");
}
}
if(ferror(stdin))
{
err_sys("input error");
}
exit(0);

}

int main()
{
char buf[MAXLINE];
while(fgets(buf,MAXLINE,stdin) != NULL)
{
if(fputs(buf,stdout) == EOF)
{
err_sys("output error");
}
}
if(ferror(stdin))
{
err_sys("input error);
}
exit(0);
}

下面两个函数执行二进制I/O操作:
size_t fread(void *restrict ptr,size_t size,sizez_nobj,FILE *restrict fp)
size_t fwrite(const void *restrict ptr,size_t size,sizez_nobj,FILE *restrict fp)
两个函数的返回值:读或者写的对象数
size :为每个数组元素的长度,nobj:欲写的元素数

读或者写一个二进制数组,列如:将一个浮点型数组的第2~5个元素写至一个文件上:
float data[10];
if(fwrite(&data[2],sizeof(float),4,fp) != 4)
err_sys("fwrite ,error");

读写一个结构:
struct {
short count;
long total;
char name[NAMESIZE];
}item;

if(fwrite(&iteml,sizeof(item),1,fp) != 1)
err_sys("fwrite error");

定位流:
long ftell(FILE *fp)
成功:返回文件当前位置;出错:-1L
int fseek(FILE *fp,long offset,int whence);
成功:返回0,出错:非0

void rewind(FILE *fp);
将流设置为文件的起始位置

int fgetpos(FILE *restrict fp, fpos_t *restrict pos);
int fsetpos(FILE * fp, fpos_t *restrict pos);
成功:0,出错:非0
fgetpos将文件位置指示器的位置存入有pos指向的对象中,在以后调用fsetpos时,就可以使用此值将流从新定位至该位。

int fileno(FILE *fp)
对一个流调用fileno函数获得其描述符。

char a[]="12345" sizeof(a) = 6

int atexit(void (*func)(void)); 登记函数,exit调用这些函数的时候的顺序用它登记时的顺序相反

递归函数调用的时候就会用一个新的栈帧!不影响另一个函数调用实例中的变量!

子进程对变量的改变不影响父进程

**********************************************************************************************************************************************************
**********************************************************************************************************************************************************
**********************************************************************************************************************************************************

时间: 2025-01-02 16:35:22

关于文件流的简单操作的相关文章

c++学习笔记:文件流的各种操作

欲使用ifstream和ofstream,首先需要引用fstream #include <fstream> 一.使用ifstream读取文件的全部文本 ifstream ifs; string path("src/test.txt");//考虑到最终程序最终执行环境是在工程目录下的,所以这里用此路径 ifs.open(path);//open可以传第二个参数,六个值in:以读方式打开:out:以写方式打开,直接写入将覆盖,但是可以移动指针,在文件末尾写入:binary:操作

2. 数据库文件配置与简单操作 Model / M()

官方文档说明位置: Thinkphp/Conf/convention.php 内容说明如下: 'DB_TYPE' => '', // 数据库类型 'DB_HOST' => '', // 服务器地址 'DB_NAME' => '', // 数据库名 'DB_USER' => '', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '', // 端口 'DB_PREFIX' => '', // 数据库表前缀 复制放入项目的模块配置文

文件文本中简单操作与实际

1.文件打开模式补充:r+ -------- 可读可写w+------- 可写可读a+------可追加可读 2.文件内光标的移动:seek (offset,whence) -----移动的全是字符的字节数offset :光标移动的位数whence : 0:参照文件的开头,t和b都可以用 1:参照光标所在的当前位置 只在b模式用 2:参照文件的末尾 只在b模式用 3.截断文件: truncate(6)6 为字符的长度,汉字为3个b 字母为1 个.保留0-6 的字节数 原文地址:https://w

C++ 文件的简单操作

=================================================================== 编写程序时,很多时候都要对文件进行操作,比如从文件中读取数据,通过程序将一些数据保存到文件中等等.. 以下是c++对文件的一些简单操作. =================================================================== 一.文件输出 要将程序中的数据输出到文件中,一般需要以下5个步骤: ① 包含fstream

Java中常用IO流之文件流的基本使用姿势

所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流.IO操作比较复杂,涉及到的系统调用比较多,相对操作内存而言性能很低.然而值得兴奋的是,Java提供了很多实现类以满足不同的使用场景,这样的实现类有很多,我只挑选些在日常编码中经常用到的类进行说明,本节主要介绍和文件操作相关的流,下面一起来瞧瞧吧. File File是Java在整个文件IO体系中比较

【幻化万千戏红尘】qianfengDay20-java基础学习:数据流、随机读取文件流RandomAccessFile

课程回顾: 流:转换流:字符和字节的转换对象流(Object):序列化,反序列化 打印流(Print):打印各种数据类型的数据 今日内容:数据流(Data):支持将基本数据类型写出,字节流,处理流1.DataOutputStream:数据输出字节流常用方法:writeXXX:写出基本数据类型的数据writeUTF:写出字符串2.DataInputStream:数据输入字节流常用方法:readXXX:读取基本数据类型的数据readUTF:读取字符串 随机读取文件类:拥有写出和读取基本数据类型的方法

文件流(二)

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO; namespace 文件流{public partial class Form1 : Form { public

【C#小知识】C#中一些易混淆概念总结(九)---------异常,文件流对象,.NET序列化,多线程

终于有时间来完成这个系列的最后一篇关于C#中异常,文件流对象,序列化,多线程问题的总结. 首先就来看关于异常的相关知识吧 一,异常 首先区分三个概念:警告,异常和错误.不管对于编程新手或者是老手对这三个概念都应该是非常熟悉,且是经常遇到的. 警告:在程序中出现,对于程序的执行没有影响. 异常:在运行的时候发生,一旦发生程序就会停止. 错误:一直是 指程序不符合语法规范. 在C#中的标准抛出异常的语句如下: try { //尝试执行的语句 } catch (Exception) { //抛出异常的

JavaI/O:简单的使用DataOutputStream和DataInputStream操作文件流

DataInputStream 是数据输入流.它继承于FilterInputStream.DataInputStream 是用来装饰其它输入流,它"允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型".应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据. DataOutputStream?是数据输出流.它继承于FilterOutputStream.DataOutputStream?是用来装饰其它