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. 循序渐进学.Net Core Web Api开发系列【17】:.Net core自动作业之Hangfire

    nuget搜索:Hangfire 安装即可,这里我选择的是 1.7.0-beta1 版本 我是用这个集成到了 mvc api里 这里需要在 Startup 文件里进行如下配置 在配置方法 Config ...

  2. css3两个汤圆亲吻动效

    效果图: 模板来源:https://www.17sucai.com/pins/demo-show?id=35132 自己仿写出来的效果图: 笔记: 1.transform:translate(-50% ...

  3. nginx 和keepalived的使用

    今天看了培训视频,看到这俩玩意,挺有意思,先粘贴一下,别等到时候忘了. 官方网站 www.nginx.org nginx的特点 稳定版本是用偶数来做标记,测试版本使用奇数作为标记 通过yum来安装 安 ...

  4. html浮动小问题

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

  5. Android各种蓝牙设备的UUID(转)

    转自:http://www.14blog.com/archives/481 UUID是“Universally Unique Identifier”的简称,通用唯一识别码的意思.对于蓝牙设备,每个服务 ...

  6. Python模块和模块引用(一)

    """ import my_module as mm courses = ['History','Math','Physics','CompSci'] index = m ...

  7. 【leetcode】973. K Closest Points to Origin

    题目如下: We have a list of points on the plane.  Find the Kclosest points to the origin (0, 0). (Here, ...

  8. vue中使用v-if判断数组长度是出现length报错

    在vue中使用v-if判断数组的长度时出现报错 <el-collapse-item :key="index" v-if="data.childrens.length ...

  9. Dart编程实例 - 第一个Dart程序

    Dart编程实例 - 第一个Dart程序 main() { print("Hello World!"); } 本文转自:http://codingdict.com/article/ ...

  10. JSTL标签的用法详解

    在JSP中写Java代码是一件很恶心的事情,代码量少的话还可以,要是多的话,就蛋疼了,整个页面都是<%  %>所以EL表达式和JSTL就应运而生了,这里我们注重讲解一下JSTL标签的使用: ...