fputs与fgets
1. fputs
函数名: fputs
功 能:
送一个字符到一个流中
用 法: int fputs(char
*string, FILE *stream);
说明:
fputs是一种函数,具有的功能是向指定的文件写入一个字符串(不自己主动写入字符串结束标记符‘\0’)。成功写入一个字符串后,文件的位置指针会自己主动后移。函数返回值为非负整数;否则返回EOF(符号常量,其值为-1)。
缓冲区string中保存的是以'/0'结尾的字符串。fputs将该字符串写入文件stream,但并不写入结尾的'/0'。与fgets不同的是。fputs并不关心的字符串中的'/n'字符,字符串中能够有'/n'也能够没有'/n'
程序例:
#include <stdio.h>
int main(void)
{
/* write a string to standardoutput */
fputs("Hello world\n", stdout);
return 0;
}
也能够输出到一个文件流
2. fgets
函数名: fgets
功 能:
fgets
从指定的文件里读一行字符到调用者提供的缓冲区中
用 法: char *fgets(char
*string, int size,FILE *stream);
说明:
如今说说fgets函数,參数string是缓冲区的首地址。size是缓冲区的长度,该函数从stream所指的文件里读取以'/n'结尾的一行(包含'/n'在内)存到缓冲区string中。而且在该行末尾加入一个'/0'组成完整的字符串。
假设文件里的一行太长,fgets从文件里读了size-1个字符还没有读到'/n'。就把已经读到的size-1个字符和一个'/0'字符存入缓冲区。文件里剩下的半行能够在下次调用fgets时继续读。
假设一次fgets调用在读入若干个字符后到达文件末尾,则将已读到的字符串加上'/0'存入缓冲区并返回,假设再次调用fgets则返回NULL,能够据此推断是否读到文件末尾。
注意:
对于fgets来说,'/n'是一个特别的字符,而'/0'并无不论什么特别之处,假设读到'/0'就当作普通字符读入。假设文件里存在'/0'字符(或者说0x00字节)。调用fgets之后就无法推断缓冲区中的'/0'到底是从文件读上来的字符还是由fgets自己主动加入的结束符。所以fgets仅仅适合读文本文件而不适合读二进制文件。而且文本文件里的全部字符都应该是可见字符。不能有'/0'。
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
FILE *stream;
char string[] = "This is atest";
char msg[20];
/* open a file for update */
stream =fopen("DUMMY.FIL", "w+");
/* write a string into the file*/
fwrite(string, strlen(string), 1,stream);
/* seek to the start of the file*/
fseek(stream, 0, SEEK_SET);
/* read a string from the file */
fgets(msg, strlen(string)+1, stream);
/* display the string */
printf("%s", msg);
fclose(stream);
return 0;
}
fputs与fgets的更多相关文章
- 关于fputs和fgets的几个细节
C语言中两个标准IO fputs和fgets都是针对行来进行数据的读取的!这里关于这两个IO函数我有几个小细节想在这里和大家分享一下,希望能够对大家产生帮助! 首先贴上这两个函数的函数声明,下面以这两 ...
- 标准 IO fgets与fputs 对文件的操作
char *fgets(char *s, int size, FILE *stream); int fputs(const char *s, FILE *stream); 使用fgets从流中读取 ...
- C语言 文件操作8--fputs()和fgets()
//fputs()和fgets() #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...
- 文件字符读写函数fscanf()和 fgets() 比较
一. 文件格式化读入函数 fscanf() int fscanf(文件指针,格式化字符串,输入列表); 返回值: 整形,输入列表中定义字符串的个数. 1, 例如读取字符串: char str1[ ...
- c语言之I/O函数
c语言中常用的I/O函数 最常用的字符串的标准I/O函数有getchar().putchar().gets().puts().scanf().printf().fputs().fgets().getc ...
- C语言函数的读写
文件打开关闭函数:fopen()和fclose() <FILE *fopen(char *filename, char *mode)| int fclose(FILE *fp)> 字符读写 ...
- [C和指针]第四部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- PHP实例开发(2)PHP通过mail()或Socket发邮件
PHP通过mail()或Socket发邮件 1.PHP中发送邮件的方法 PHP发送邮件是“非常的简单” 因为他提供了mail()函数直接发送,但这也继 register globals 成为了对初学者 ...
- 《C和指针》之ANSI C标准输入输出函数
一.I/O流操作一般流程: (1)为每一个要打开的文件定义一个FILE *类型的指针变量,这个指针变量将指向I/O流使用的FILE结构体. (2)使用fopen函数打开I/O流.要打开一个I/O流,必 ...
随机推荐
- [Apple开发者帐户帮助]三、创建证书(4)创建Safari签名证书
您的Safari扩展程序必须由Apple颁发的证书签名,您可以在开发者帐户中创建和下载该证书. 在“ 证书”,“标识符和配置文件”中,从左侧的弹出菜单中选择“Safari扩展”. 在“证书”下,选择“ ...
- 5.27 indeed 第三次网测
1. 第一题, 没有看 2. 暴力枚举.每一个部分全排列, 然后求出最大的请求数. #include<bits/stdc++.h> #define pb push_back typedef ...
- JDK介绍
Java的版本最开始是1995年的JDK Alpha and Beta版本,第二年发布JDK1.0版本之后就是JDK1.1,JDK1.2.到1998年,不再叫JDK了,而是叫J2SE,但是版本号还是继 ...
- HttpServletResponse对象,自己学习的心得
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应response对象. request和response对象既然代表请求和响应,那我们要 ...
- angular js shopping
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 努比亚 Z17(Nubia NX563J) 解锁BootLoader 并刷入recovery
工具下载链接:https://pan.baidu.com/s/1mjEzcyG 备用下载链接:https://pan.baidu.com/s/1eTdx6Zg 密码:1d3r 本篇教程教你如何傻瓜式解 ...
- 高通处理器手机 解锁Bootloader 教程
目前很多手机都需要解锁Bootloader之后才能进行刷机操作 本篇教程教你如何傻瓜式解锁Bootloader 首先需要在设置-关于手机 找到版本号(个别手机可能是内核版本号,甚至其他) 然后 快 ...
- 教材配套PPT初稿
1-10章初稿,基本完整.有些粗糙,后面可能会稍作调整. 附更新情况如下: 1.增加了第10章内容: 2.第5章增加了一些内容: 3.第3章内容部分更新: 4.增加了第8-9章内容. 订正:更新了第8 ...
- Arduino DS18B20温度检测
一.实物图 注:电阻选取4.7k欧 二.事例代码 注:先下载Onewire库到arduino libraries目录下,然后就有例子 #include <OneWire.h> // One ...
- Spring+SprinMVC配置学习总结
一千个人有一千种spring的配置方式,真是这样.看了好多的配置,试验了很多.这里做一个总结. 1 原理上,spring和springmvc可以合并为一个配置文件然后在web.xml中加载,因为最终的 ...