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流,必 ...
随机推荐
- (Go)07.Go语言中strings和strconv包示例代码详解02
1.strings使用 统计字符串出现次数 strings.Count(s string, substr string) int Count 用于计算字符串 substr 在字符串 s 中出现的非重叠 ...
- 棋盘问题(dfs)
http://poj.org/problem?id=1321 思路:按行搜索,回溯时还原棋盘. #include <stdio.h> #include <string.h> ] ...
- # secure_link_module模块
作用 制定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问 限制链接生效周期 首先检查nginx是否已安装模块 #nginx -V 输出nginx所有已安装模块,检查是否有ngx_http_ ...
- EntityFramewok 插入Mysql数据库 中文产生乱码解决
首先Mysql表,建表的时候,有没有选择UTF8,如果是默认的编码latin1,就会产生乱码 这里修改后,还是乱码,那就要检查发生乱码的列是不是UTF8格式 然后修改App.Config或者Web.C ...
- matplotlib之pyplot 学习示例
现在通过numpy和matplotlib.pyplot 在Python上实现科学计算和绘图,而且和matlab极为相像(效率差点,关键是方便简单) 这里有大量plots代码例子. 1. 简单的绘图( ...
- python--4、装饰器
装饰器(Decorator) 使用场景:为被装饰器装饰的函数增加功能,但又不希望修改函数的定义,即在代码运行期间动态增加功能. 装饰器更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也 ...
- Android第一次项目
学习了一个月的Android,接触了人生中第一个安卓项目,对于一个小白来说,总结是很重要的学习方法,以下我把学到的东西总结以下: 1. 1>okhttp3用法解析(边贴代码边熟悉) public ...
- java编程基础篇-------> 从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度。如果是 12 月、1 月、2 月,就属于冬季。
从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度.如果是 12月.1 月.2 月,就属于冬季:如果是 3 月.4 月.5 月,就属于春季:如果是 6 月.7 月.8 月,就属于夏季: ...
- Eclipse安装配置——For Java
1.下载安装JRE 2.下载Eclipse,解压到相应文件夹 3.配置Eclipse 3.1 配置字体大小 -12号 3.2配置workspace默认编码,utf-8,默认系统windows 3.3 ...
- bootstrap 模态框日期控件datepicker被遮住问题的解决
找到日期输入框,并将 .class 属性的 z-index 改大 在JSP页添加样式: 这样就OK了: