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. python基础【第六篇】

    list列表 基本结构 lst =[1,2,3,5,6] 为什么学列表? 列表能够存储比字符串更多的数据 列表能够存储各种数据类型 列表的注意点 列表是有序的 列表是可变的,支持索引,切片,步 切片后 ...

  2. Python - 元组 , range

    元组和元组嵌套 元组: 俗称不可变的列表.又被成为只读列表, 元组也是python的基本数据类型之一, 用小括号括起来, 里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是 ...

  3. 初探Remoting双向通信(二)

    原 初探Remoting双向通信(二) 2013年06月25日 11:46:24 喜欢特别冷的冬天下着雪 阅读数 2977 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  4. android中的原始资源的使用

    原始资源可以放在两个地方: 1.位于/res/raw目录下,android SDK会处理该目录下的原始资源,android SDK会在R清单类中为该目录下的资源生成一个索引项. 2.位于/assets ...

  5. RocketMQ事务性消息

    mq事务介绍 mq事务消息流程 生产者发送消息到mq,消息状态为:SEND_OK.此消息是消费者不可见(消费者无法消费此条消息) 执行本地任务:成功则返回COMMIT_MESSAGE,此时消费者可消费 ...

  6. JAVA求解质因数

    /** * 求质因数 * @param n * @return */ public static List<Integer> generatePrimeFactors(int n){ Li ...

  7. 如何取消IDEA的自动删除行尾空格?

    使用IDEA,添加注释的时候敲空格,总是会把行尾空格删除导致代码跑到注释行,很不爽~~ 取消这个不爽的功能:File--Settings--Editor--General--Other--Strip ...

  8. RPC协议的介绍

    根据网上搜索的一些资料摘抄汇总的,如果有误,欢迎斧正. 早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来.假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进 ...

  9. 【记录】利用Jquery 在 textarea 内实现文字动态换行

    背景: 最近在做前端时候遇到一种情况,需要用js动态输入内容到textarea, 比如实时聊天功能,用户A每次发送信息都需要另起一行. 问题: 根据以往经验,以为用$('#textArea').htm ...

  10. egrep 正则

    首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支 ...