整理了一份C语言的文件读写件操作代码,测试时打开相应的注释即可。

 #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h> /*
* EOF: 符号常量,其值为-1.
* fgets() 最多读取int-1个字符,遇换行或EOF即返回.
* fputs() 写文件时,忽略字符串截止符'\0'.
* fread()和fwrite() 数据块读写,多用于结构体数组(顺序存储的结构体).
*
* 函数原型:
* 读:
* int fgetc(FILE *stream);
* char *fgets(char *s, int size, FILE *stream);
* size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
* int fscanf(FILE *stream, const char *format, ...);
* 写:
* int fputc(int c, FILE *stream);
* int fputs(const char *s, FILE *stream);
* size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
* int fprintf(FILE *stream, const char *format, ...);
* 其他:
* void rewind(FILE *stream); 将文件内部的位置指针重新指向一个流(数据流/文件)的开头.
*
* 打开方式:
* r(read): 读
* w(write): 写
* a(append): 追加
* +: 读和写
* t(text): 文本文件,可省略不写
* b(banary): 二进制文件
*/ FILE *fp = NULL; // READ
void GetCharFromFile(FILE *fp)
{
int ch = ; while ((ch=fgetc(fp)) != EOF) //失败时返回 EOF
{
printf("fget: [%c]\n", ch);
}
} void GetLineFromFile(FILE *fp)
{
char line[] = ""; while (fgets(line, sizeof(line), fp) != NULL) //失败时返回 NULL
{
printf("fgets: [%s]\n", line);
}
} void GetBlockFromFile(FILE *fp)
{
int i = ;
int block[] = {};
int count = ; while (fread(block, sizeof(block), count, fp) == count) //失败时返回值 != count
{
printf("fread: ");
for (i=; i<; i++)
{
printf("%d ", block[i]);
}
printf("\n");
}
} void ReadFormatToFile(FILE *fp)
{
char file[] = "";
char func[] = "";
char date[] = "";
int line = ; fscanf(fp, "%s %s %d %[^\n]", file, func, &line, date); //返回读取元素个数,eg:4
printf("file: %s\n", file);
printf("func: %s\n", func);
printf("line: %d\n", line);
printf("date: %s\n", date);
} // WRITE
int WriteCharToFile(FILE *fp, char ch)
{
int ret = ; ret = fputc(ch,fp); //失败时返回EOF
return ret!=EOF?:-;
} int WriteStrToFile(FILE *fp, char *str)
{
int ret = ; ret = fputs(str, fp);
return ret!=EOF?:-; //失败时返回EOF
} int WriteBlockToFile(FILE *fp, const void *block, int size, int count)
{
int ret = ; ret = fwrite(block, size, count, fp); //失败时返回值 != count
return ret!=count?-:;
} int WriteFormatToFile(FILE *fp)
{
int ret = ; ret = fprintf(fp, "%s %s %d %s\n", __FILE__, __func__, __LINE__, __DATE__);
return ret<?-:; //失败时返回一个负值
} // MAIN
int main(int argc, char **argv)
{
char ch = 'r';
char *str = "Hello World.\n";
int block[] = {,,,,,,,,,};
char *filePath = "./ll"; fp = fopen(filePath, "w+"); //不关心文件存在与否,每次重写文件,并可读
if (NULL == fp)
{
perror("fopen");
return -;
} // WRITE
// printf("WriteCharToFile: %s\n", WriteCharToFile(fp, ch)?"Fail":"Success");
printf("WriteStrToFile: %s\n", WriteStrToFile(fp, str)?"Fail":"Success");
// printf("WriteBlockToFile: %s\n", WriteBlockToFile(fp, block, sizeof(block), 1)?"Fail":"Success");
// printf("WriteFormatToFile: %s\n", WriteFormatToFile(fp)?"Fail":"Success"); rewind(fp);
// READ
// GetCharFromFile(fp);
GetLineFromFile(fp);
// GetBlockFromFile(fp);
// ReadFormatToFile(fp); fclose(fp);
return ;
}

C语言基础文件读写操作的更多相关文章

  1. C语言的文件读写操作函数小结

    一.文件打开 使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE包含了所有用来控制流的必要的信息.函数原型为: FILE ...

  2. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  3. C语言文件读写操作

    C语言实现文件读写,注意区分几个方法: 写入: fwrite() //个人认为这个最好,可是实现写入任何数据类型,任何长度 fputs() //写入一个字符串,字符串长度不能太长,具体的长度未知,但估 ...

  4. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  5. java文件读写操作类

    借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内 ...

  6. C语言对文件的操作函数用法详解2

    fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const  ...

  7. C语言对文件的操作函数用法详解1

    在ANSIC中,对文件的操作分为两种方式,即: 流式文件操作 I/O文件操作 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef str ...

  8. 实现动态的XML文件读写操作(依然带干货)

    前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...

  9. python 基础-文件读写'r' 和 'rb'区别

    原文链接: python基础-文件读写'r' 和 'rb'区别 一.Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r ...

随机推荐

  1. 《algorithm puzzles》——谜题

    这篇文章开始正式<algorithm puzzles>一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼.一只羊.一颗卷心菜.他需要用船将这三样东西运至对岸,然而,这艘船空 ...

  2. Lost's revenge - HDU 3341 (自动机+DP)

    题目大意:先给你一些子串,然后给你一个母串,母串里面的字母可以任意调换位置,问最多这个母串经过一些位置变动最多能包含多少个子串.   分析:可以比较明显的看出来的DP,先求出来ATGC分别有多少,然后 ...

  3. log4jdbc与logback集合打印日志过多的解决

    在项目中使用了log4jdbc,可以很方便的把sql的参数也打印出来,便于问题调试.比如原始sql: select * from t_order where order_id = ? : 经过log4 ...

  4. EF 5.0 和 EF4.0 语法区别

    // 实现对数据库的添加功能,添加实现EF框架的引用 40 41 public T AddEntity(T entity) 42 43 { 44 45 //EF4.0的写法 添加实体 46 47 // ...

  5. 深入理解javascript闭包(一)

    闭包(closure)是Javascript语言的一个难点.也是它的特色,非常多高级应用都要依靠闭包实现. 一.什么是闭包? 官方"的解释是:闭包是一个拥有很多变量和绑定了这些变量的环境的表 ...

  6. Android导出jar包后的资源使用问题

    我们常常遇到一个需求,就是给别人使用我们project的时候,为了可以屏蔽代码,把代码封装成jar包提供给第三方使用,可是这样我们的资源文件怎么给对方用呢? 网上有非常多方法,实用ClassLoade ...

  7. CSRF跨站点请求伪造漏洞问题

    最近在写php,项目写完后送检发现一个漏洞问题CSRF,强行拖了我一天的时间,沉迷解决问题,茶饭不思,日渐消瘦,时间比较赶,这篇比较糙,凑合看下. 好了废话不多说下面是今天的解决方案. 博主用的是Th ...

  8. Android缓存技术

    android应用程序中 1. 尽可能的把文件缓存到本地.可以是 memory,cache dir,甚至是放进 SD 卡中(比如大的图片和音视频).    可以设置双重缓冲,较大的图片或者音频放到SD ...

  9. C#关于使用枚举遇到的问题----Type运算符使用的必要性

    我定义了一个枚举AttributeName 然后写到下面代码: Enum .GetValues (AttributeName ): 毫无疑问的错了.别人说要加个Typeof 也就是Enum .GetV ...

  10. jquery.cookie用法详细解析

    本篇文章主要是对jquery.cookie的用法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将 ...