标准I/O库(stdio)及其头文件stdio.h 为底层I/O系统调用提供了一个通用的接口。
在标准I/O库中,与底层文件描述符对应的是流(stream),它被实现为指向结构FILE的指针。
在启动程序时,有三个文件流是自动打开的。它们是stdin,stdout,stdeer。它们都是在stdio.h头文件里定义的,分别代表标准输入、标准输出和标准错误输出。
标准I/O库中以下库函数:
  • fopen fclose
  • fread fwrite
  • fflush-
  • fseek-
  • fgetc getc getchar
  • fputc putc putchar
  • fgets gets
  • printf fprintf sprintf
  • scanf fscanf  sscanf
1.fopen函数 :用于文件和终端的输入和输出。
#include <stdio.h>
FILE * fopen(const char* filename, const char *mod);
fopen打开由filename参数指定的文件,并把它与一个文件流关联起来。mode参数指定文件的打开方式,它取以下字符串中的值。

2. fwrite fread

#include <stdio.h>
int main()
{
    FILE *pFile = NULL;
    int array[3] = {1, 2, 3};
    int array2[3] = {0};
    
    pFile = fopen("test.txt", "w+");
    if (NULL != pFile)
    {
        fwrite(array, 3, sizeof(int), pFile);
        fclose(pFile);
        pFile = fopen("test.txt", "r+");
    if (NULL != pFile)
    {
            fread(array2, 3, sizeof(int), pFile);
        printf("%d,%d,%d", array2[0],  array2[1], array2[2]);
    }
        fclose(pFile);
    }
 
    return 0;
}
 

标准I/O库 常用函数使用

1.fopen函数 :用于文件和终端的输入和输出。

#include <stdio.h>

FILE * fopen(const char* filename, const char *mod);

2.fclose函数:关闭指定的文件流stream。

#include <stdio.h>

int fclose(FILE *stream);

3.getcwd函数:把当前目录的名字写入buf中。

#include<unistd.h>

char* getcwd(char* buf ,size_t size);

#include<stdio.h>
#include<unistd.h>
int main()
{
char acFilePath [] = {}; getcwd(acFilePath, sizeof(acFilePath));
printf("path is %s \r\n", acFilePath);
return ;
}

ex:

4.fgets函数:从输入文件流stream中读取一个字符串。

#include <stdio.h>

char *fgets(char *s, int n ,FILE *stream);

fgets把一个字符串写到s指向的的字符串里,直到出现以下某种情况:

  • 遇到换行符
  • 已经传输了n-1个字符
  • 到达文件尾。

它会把遇到的换行符号也传递到接收字符串里,再加上一个表示结尾的空字节\0。一次最多只能传输n-1个字符。

5格式化输入输出

#include <stdio.h>

int fprintf(FILE *stream, const char *format, ...)

把自己的输出送到一个指定的文件流中。

#include<stdio.h>
int main()
{
FILE *pfile = fopen("/home/xiaodeyao/wzh/code/3_IO/new.txt","wb+");
fprintf(pfile, "the num is %d, the string is %s", , "hello world!");
return ; }

ex:

#include <stdio.h>

int fscanf(FILE *stream, const char *format, ...)

从流 stream 读取格式化输入。

#include<stdio.h>
int main()
{
FILE *pfile = fopen("/home/xiaodeyao/wzh/code/3_IO/fscanf.txt", "r");
int a = ;
char acDate[] = {};
float dou = ;
char c = ;
fscanf(pfile, "%d %s %c %f", &a, acDate, &c, &dou);
printf("%d, %s, %c ,%f\r\n", a, acDate, c, dou);
return ;
}

ex:

ps:这里文件mod如果是“w‘”,会有问题。但是某些情况下是可以用“w"的。例如:http://www.runoob.com/cprogramming/c-function-fscanf.html

这里待深究一下。

6.fseek()

为下一次文件读写操作指定位置。

int fseek(FILE *stream, long int offset, int whence)

stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
offset -- 这是相对 whence 的偏移量,以字节为单位。
whence -- 这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:
常量 描述
SEEK_SET 文件的开头
SEEK_CUR 文件指针的当前位置
SEEK_END 文件的末尾

#include <stdio.h>

int main ()
{
FILE *fp; fp = fopen("file.txt","w+");
fputs("This is w3cschool.cc", fp); fseek( fp, , SEEK_SET );
fputs(" C Programming Langauge", fp);
fclose(fp); return();
}

ex:

 

7.ftell()

long int ftell(FILE *stream)

参数
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值
该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为一个正值。

#include <stdio.h>

int main ()
{
FILE *fp;
int len; fp = fopen("file.txt", "r");
if( fp == NULL )
{
perror ("打开文件错误");
return(-);
}
fseek(fp, , SEEK_END); len = ftell(fp);
fclose(fp); printf("file.txt 的总大小 = %d 字节\n", len); return();
}

ex:

参考:

http://www.runoob.com/cprogramming/c-function-ftell.html

ps:C语言文本方式和二进制方式读写操作的区别 http://blog.csdn.net/junbopengpeng/article/details/13091045

Linux学习7-文件操作的更多相关文章

  1. Linux学习之文件操作

    Linux,一起学习进步-    mkdir The mkdir command is used to create directories.It works like this: mkdir命令是用 ...

  2. Linux学习-基本命令文件操作

    终端 1.多个终端 连接linux的客户端可以理解为终端. 命令:tty查看终端 2.不同终端之间的通讯 [root@wyx wyx]# echo 123 > /dev/pts/1 把123发给 ...

  3. 3)Linux程序设计入门--文件操作

    )Linux程序设计入门--文件操作 Linux下文件的操作 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 .文件的创建和读 ...

  4. Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)

    Linux学习之文件特殊权限详解(SetUID.SetGID.Sticky BIT) 目录 SetUID SetGID Sticky BIT SetUID SetUID简介 只有可以执行的二进制程序和 ...

  5. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  6. HTML5学习之文件操作(九)

    之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很进行跨平台的处理,另外就是让我们的web应用依赖了第三方的插件,而不是很独立 ...

  7. Smart210学习记录-------文件操作

    一.linux文件操作(只能在linux系统上用) 创建:int creat(const char* filename, mode_t mode) filename 表示要创建的文件名,mode表示对 ...

  8. Linux系统编程@文件操作(一)

    只总结了部分常用的内容,详细内容参考<UNIX环境高级编程>及相关书籍. Linux中文件编程可以使用两种方法 Linux系统调用(依赖于系统) C语言库函数(不依赖于系统) Linux系 ...

  9. linux下的文件操作——批量重命名

    概述:在日常工作中,我们经常需要对一批文件进行重命名操作,例如将所有的jpg文件改成bnp,将名字中的1改成one,等等.文本主要为你讲解如何实现这些操作 1.删除所有的 .bak 后缀: renam ...

  10. NodeJS学习之文件操作

    NodeJS -- 文件操作 Buffer(数据块) JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作 ...

随机推荐

  1. Unity 3D 简易制作摄像机围绕物体随鼠标旋转效果

    Unity 3D 简易制作摄像机围绕物体随鼠标旋转效果 梗概: 一. 摄像机围绕目标物体旋转, 即摄像机离目标物体有一定的距离且旋转轴心为该物体的位置. 二. 当目标物体被障碍物挡住后, 需要将摄像机 ...

  2. SCRUM 12.17

    今天,我们的用户统计功能终于上线了!! 大家辛苦工作了许久.我们测试的用户统计功能效果模拟如下 还有一些好消息,比如,我们的应用在小米平台收到了崩溃的反馈报告. 这说明我们留下的一些BUG暴露了出来, ...

  3. Linux内核分析——第三周学习笔记20135308

    第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...

  4. Python爬虫爬中文却显示Unicode,怎样显示中文--问题解答

    首先爬取古诗网站时,显示 原因是因为输出为列表[] 如果写一个循环,输出其中每个元素就为中文了...

  5. C++:继承访问属性(public/protected/private)

    • 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...

  6. RYU 灭龙战 fourth day (2)

    RYU 灭龙战 fourth day (2) 前言 之前试过在ODL调用他们的rest api,一直想自己写一个基于ODL的rest api,结果还是无果而终.这个小目标却在RYU身上实现了.今日说法 ...

  7. springmvc关于redisCluster的使用及配置

    首先附上maven仓库jar包的下载地址:https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-loca ...

  8. 第四次WBS

    分解原则 1.将主体目标逐步细化分解,最底层的日常活动可直接分派到个人去完成: 2.每个任务原则上要求分解到不能再细分为止: 3.日常活动要对应到人.时间和资金投入. 二.任务分解的方法 1.采用树状 ...

  9. C# winform打开文件夹并选中指定文件

    例如:打开“E:\Training”文件夹并选中“20131250.html”文件 System.Diagnostics.Process.Start("Explorer.exe", ...

  10. DataGridView显示行号-RowPostPaint

    DataGridView控件在显示数据时,我们有时候需要显示行号,以便检索查看方便使用. 但DataGridView默认没有设置显示行号的属性. 此时我们只要在DataGridView的RowPost ...