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

int fputs(const char *s, FILE *stream);

 

使用fgets从流中读取数据时会在存放的缓冲区中自动添加 '\0' 结尾

例如:

#include <stdio.h>

int main(int argc, const char *argv[])
{
FILE *fp = NULL;
fp = fopen(argv[],"r");
if(fp == NULL )
{
perror("open fail : ");
return -;
}
char buf[] = {};
fgets(buf,,fp); //每次在打开文本流中读取5个字节,但是只会获取到4个,会在buf的第5个位置添加 '\0' ; printf("buf = %s\n",buf);
fclose(fp);
return ;
}

测试

使用 fgets 当读取的这一行不满足5个字符时,如现在这行只有 ab 函数会把这一行的 '\n' 也读取到在 buf的存储 {'a', 'b', '\n', '\0'};是字符串的形式

根据fgets 就可以实现获取文件有多少行内容了

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE *fp = NULL;
fp = fopen(argv[],"r");
char buf[] = {};
int line = ;
while()
{
if(fgets(buf,,fp) == NULL ) //fgets返回读取的内容,失败返回NULL,就是美都区到内容
{
break;
}
else if(buf[strlen(buf)-] == '\n')// strlen求buf中字符串长度,不包含'\0'( 其实fgets读取的内容末尾是有'\0'的 ),
{ // -1 就是读取到末尾的内容,如果这个字符是 '\n'就是一行
      line++; 
   }
  }
  printf("line = %d\n",line);
  fclose(fp);
  return ;
}

例子: 使用fputs 和fgets 实现文件内容复制

#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE *f_r;//读
FILE *f_w;//写
if((f_r=fopen(argv[],"r")) == NULL) //程序运行时,终端输入文件名,只读方式打开
{
perror("open r :");
return -;
}
if((f_w=fopen(argv[],"w")) == NULL) //只写方式打开,打开文件清空文件内容
{
perror("open w :");
return -;
}
char buf[] = {};
while()
{
if(fgets(buf,,f_r)==NULL)//每次读取10个文件内容
{
break;
}
fputs(buf,f_w); //把读取到的内容写到另一个文件中
}
puts("cp over");
fclose(f_r);
fclose(f_w);
return ;
}

标准 IO fgets与fputs 对文件的操作的更多相关文章

  1. UNIX高级环境编程(6)标准IO函数库 - 流的概念和操作

    标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题. 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题.   1 ...

  2. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  3. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  4. 标准IO:常用函数集合

    stdio : 标准IO  (1) 流(stream)和文件(file) 流和文件 在Turbo C2.0中是有区别的, Turbo C2.0 为编程者和被访问的设备之间提供了一层抽象的东西, 称之为 ...

  5. (九)errno和perror、标准IO

    3.1.6.文件读写的一些细节3.1.6.1.errno和perror(1)errno就是error number,意思就是错误号码.linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会 ...

  6. 标准io与文件io

    A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件I ...

  7. 文件IO和标准IO的区别【转】

    一.先来了解下什么是文件I/O和标准I/O: 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O).不带缓存指的是每个read,write都调用内核中的一个系统调用.也就是一般所 ...

  8. 标准IO与文件IO 的区别【转】

    本文转载自:http://blog.sina.com.cn/s/blog_63f31f3401013jrn.html 先来了解下什么是标准IO以及文件IO. 标准IO:标准I/O是ANSI C建立的一 ...

  9. 文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets

    clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 ...

随机推荐

  1. SpringBoot开发详解(五)--Controller接收参数以及参数校验

    原文链接:http://blog.csdn.net/qq_31001665 如有侵权,请联系博主删除博客,谢谢 Controller 中注解使用 接受参数的几种传输方式以及几种注解:  在上一篇中,我 ...

  2. elementUI 的el-pagination 分页功能

    <div class="block1"> <el-pagination @size-change="handleSizeChange" @cu ...

  3. 2018-8-10-win10-uwp-dataGrid

    title author date CreateTime categories win10 uwp dataGrid lindexi 2018-08-10 19:16:51 +0800 2018-2- ...

  4. KiCAD绘制电源符号

    KiCAD绘制电源符号 KiCAD自带的电源符号有时候不符合我们的操作习惯,需要自己重新定义电源符号,这时候就需要新建(不能更改系统自带库的电源符号) 1.新建符号,参照下图行设置 2.放置引脚和图形 ...

  5. Codeforces 454E. Little Pony and Summer Sun Celebration

    题意:给n个点m条边的无向图,并给出每个点的访问次数奇偶,求构造一条满足条件的路径(点和边都可以走). 解法:这道题还蛮有意思的.首先我们可以发现在一棵树上每个儿子的访问次数的奇偶是可以被它的父亲控制 ...

  6. Vue学习笔记【2】——Vue指令之 - v-cloak、v-text和v-html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Java实体与Json操作类

    import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.Jav ...

  8. PHP ftp_exec() 函数

    定义和用法 ftp_exec() 函数请求在 FTP 服务器上执行一个程序或命令. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_exec(ftp_connection ...

  9. NX二次开发-Block UI C++界面Enumeration(枚举)控件的获取(持续补充)

    NX9+VS2012 public: void SetBlockUIShow(); void EnumInt::SetBlockUIShow() { //获取枚举控件 PropertyList* En ...

  10. visual_c++外挂教程(详细)

    课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,G ...