C语言IO操作总结
C语言IO操作总结
C程序将输入看做字节流,流的来源是文件、输入设备、或者另一程序的输入;
C程序将输出也看做字节流;流的目的是文件、视频显示等;
文件处理:
1 :fopen("filename ","mode") 返回文件指针
mode可以为"r、w、a、r+、w+、a+"
r:读文件
w:写文件 不存在则自动创建
a:尾部追加文件 不存在则自动创建
r+ 打开文件、可读可写模式
w+ 打开文件、可读、可写如果存在则将文件截短为0 不存在则自动创建
a+ 打开文件、可读整个文件、可写文件尾部 不存在则自动创建
2: getc(fp)返回文件的字符
3 :putc(fp,stdout)等同于 putchar()
putc (fp, fpout) 将fp指向的文件写入到fpout中;
4 : fclose() 成功关闭文件返回0 否则返回EOF;
实例代码
实例效果 :(需要新建一个file.txt文件并输入内容如XXX) 每次执行完毕之后会会将flie.txt文件内容复制到filecopy.txt文件结尾位置;
#include <stdio.h>
#include <stdlib.h> // ANSI C exit() prototype
int main(int argc, char *argv[])
{ char ch; // place to store each character as read
FILE *fp; // "file pointer"
long count = ;
FILE *fpp;
// char *filename;
// scanf("%s",filename);
// filename="file.txt"; if ((fp = fopen("file.txt", "r+")) == NULL)
printf("Can't open ");
if ((fpp= fopen("filecopy.txt", "a")) == NULL)
printf("Can't open ");
while ((ch = getc(fp)) != EOF)
{
putc(ch,fpp); // same as putchar(ch);
count++;
}
fclose(fp);
printf("File has %ld characters\n", count); return ; }
5 ;fprintf 和 printf一样 只是多了一个文件指针的参数
int fprintf(FILE *stream, char *format, <variable-list>); 输出到文件中
fscanf()类似于fprintf();
6 :fgets()文件读取字符串函数
char* fgets(char* ,MAX,FILE*)
从文件中读取字符串,最多字符数为MAX,如果遇到'\n'或者缓冲区满则结束,并且在字符串结尾加空字符;
7:fgetc(fp)从文件中读出一个字符;其中getc()与fget函数作用相同但是getc()不是函数调用是宏定义;
8:feof(fp)如果到达文件结尾返回非零
9:fseek(fp,offset,position) position=SEEK_SET/SEEK_CUR/SEEK_END 从文件头开始/从当前读到的位置开始/从文件结尾开始 后两个可以为负值
10:rewind(fp); 返回文件开头位置;
11:fllush(fp);更新缓冲区;
12:ftell(fp) 返回当前读取到的位置;
实例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE * f;
char ch;
char *gets_;
// char *gets_s;
// int s;
// char str[]="aaa";
//printf("asdfasdfsadf");
if((f=fopen("pra.txt","a+"))!=NULL)
while((ch=fgetc(f))!=EOF)
printf("%c",ch);
fclose(f); if((f=fopen("pra.txt","a+"))!=NULL)
if((ch=fgetc(f))!=EOF)
{
printf("%c",ch);
if((ch=fgetc(f))!=EOF)
printf("%c",ch);
}
fclose(f);
printf("\n");
if((f=fopen("pra.txt","a+"))!=NULL)
{
printf("fgets函数 输出>>>>%s",fgets(gets_,,f));
printf(">>>>%s\n",fgets(gets_,,f));
fclose(f);
} if((f=fopen("pra.txt","a+"))!=NULL)
{
printf("fgetc函数输出<<<%c",fgetc(f));
//printf中 后一个fgetc()先执行?
printf("<<<%c%c\n",fgetc(f),fgetc(f));
fclose(f);
} if((f=fopen("pra.txt","a+"))!=NULL)
{
while(!feof(f))
{
printf("%c",fgetc(f));
printf("读到的位置为:%d\n",ftell(f));
}
fclose(f);
}
// s=fprintf(f,"hi\n");
// gets_s=gets(gets_);
// puts(gets_);
// printf("%d",strlen(str)) return ;
}
13:设置文件缓冲区 setvbuf(fp,char*buf,mode,size);
buf为自定缓冲区;size为缓冲区大小
mode:_IONBF _IOLBF _IOFBF 无缓冲IO/以换行为依据的无缓冲IO/完全无缓冲IO
14:fread(void*buffer,size,count,fp) 从文件中读内容到缓冲区buffer
buffer 接受数据的内存地址
size:单个元素的大小(单位是字节)
count:需要读元素个数;
15:fwrite同fread 只是前者是写入文件中,后者是从文件读出;
fread fwrite函数比较常用与把某种数据结构以文件形式保存在文件中
参考自:http://see.xidian.edu.cn/cpp/u/hs6/
http://my.oschina.net/myriads/blog/2849
C语言IO操作总结的更多相关文章
- Atitit.跨语言 文件夹与文件的io操作集合 草案
Atitit.跨语言 文件夹与文件的io操作集合 草案 1. Jdk原生的太难用了..1 2. PS: apache commons-io包,FileUtils有相关的方法,IOUtils一般是拷 ...
- python之协程与IO操作
协程 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B ...
- go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )
go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 点击加入 文件操作 func Open(name string) (file *File ...
- Java之IO操作总结
所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 ...
- 标准IO操作
前言 本文介绍使用java进行简单的标准IO操作. 操作步骤 1. 定义一个Scanner对象 2. 调用该对象的input函数族 (参见下面代码) 3. input函数的返回结果即是获取到的输入 示 ...
- C 语言文件操作
C 语言文件操作 1. 数据流: 程序与数据的交互以流的形式进行.fopen 即打开数据流,fclose 即刷新数据流. 所谓数据流,是一种抽象,表示这段数据像流一样,需要逐步接收,不 ...
- C语言文件操作函数
C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...
- C++ IO操作API及注意事项(包含一个日志类的实现)
C++是一个抽象程度比C高很多的语言,在使用C++时,编译器做了很多工作,如果我们不对C++的某些特性的实现机制进行了解,那么编程时也许会有很多疑惑,我们也许知道怎样做才是正确的,但不知道为什么要这样 ...
- lua io操作(一)
最近在做可视化窗口数据配置 使用的lua 语言,免不了IO操作 通过查阅资料,做了如下总结,易于理解 lua里的文件读写模型来自C语言,分为完整模型(和C一样).简单模型. 1.简单模型 io.inp ...
随机推荐
- 自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)
基本思想: // 借助一个辅助栈,入栈时,若新元素比辅助栈栈顶元素小,则直接放入辅助站 // 反之,辅助站中放入次小元素(即辅助栈栈顶元素)====保证最小元素出栈时,次小元素被保存 static c ...
- document.body.scrollTop vs document.documentElement.scrollTop && document.body.scrollHeight vs document.documentElement.scrollHeight
FireFox下 document.body.scrollHeight || document.documentElement.scrollHeight;//等价 document.body.scro ...
- keil c51的内部RAM(idata)动态内存管理程序
程序比较简单,但感觉比较有意思,个人认为有一定应用价值,希望大家有更好的思路和方法,互相促进. 程序的基本思路是:在CPU堆栈指针SP以上的RAM区域,通过把堆栈指针SP上移若干个字节,把空出的RAM ...
- mysql导入到elasticsearch
JDBC importer for Elasticsearch Java Database 连接(JDBC) 导入运行获取数据从JDBC 源 安装: 1.在下面的步骤 替换<version> ...
- ajax 调用后台接口示例
$(function(){ var _del_time_list = $("select[name='del_time_list']"); var _del_table_name ...
- 11g Rac 切换
<pre name="code" class="sql">[grid@devrac1 ~]$ crsctl status res -t ------ ...
- js实现a标签超链接提交form表单的方法
<a class="regButton" id="saveRegister" onclick="document.getElementBy ...
- 详述.NET里class和struct的异同
结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项. 结构不能声明默认构造函数(没有参数的构造函数)或析构函数. 结构的副 ...
- pyqt QTimer,QThread例子学习
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from PyQ ...
- Timer.5 - Synchronising handlers in multithreaded programs
This tutorial demonstrates the use of the boost::asio::strand class to synchronise callback handlers ...