fgets()函数
声明: char *fgets(char *str,int n,FILE* stream)
参数: str—这是指向一个字符数组的指针,该数组存储了要读取的字符串
n – 这是要读取的最大字符数(包括最后的空字符)。通常是使用以str传递的数组长度
stream –这是指向FILE对象的指针,该FILE对象标识了要从中读取字符的流。
返回值: 如果成功,该函数返回相同的str参数,如果到达文件末尾或者没有读取到任何字符,str内容保持不变,并返回一个空指针,如果发送错误,返回一个空指针。
#include<stdio.h> int main()
{
FILE* fp;
char str[]; fp = fopen("file.txt","r");
if(fp == NULL)
{
perror("open file error\n");
return -;
} while(fgets (str,,fp) != NULL)
{
puts(str);
}
fclose(fp); return ;
}
关于向stream传入stdin的情况
/***
stdin.c
***/
#include<stdio.h>
const int maxn = ; int main()
{
int iRet = -;
FILE *fp;
char str[];
char *ret_val; ret_val = fgets(str,maxn,stdin);
//fgets(str,maxn,stdin);
printf("ret_val = %8X\n",(int)ret_val);
printf("str = %s\n",str);
printf("str = %8X\n",(int)str); if(str != NULL)
{
fp = fopen("file.txt","a+");
iRet = fputs(str,fp);
if(iRet > )
{
printf("success\n");
}
else
{
printf("error\n");
}
} return ;
}
ret_val = fgets(str,maxn,stdin);
str不能仅仅单独声明为char*类型。虽然这样声明也可以通过,但是它会存在风险,如果该指针随机指向了一个正在使用的空间。
所以在声明的时候分配内存是最好的选择
ret_val他会指向和str相同的内存空间,如果str声明为char*类型,会导致返回值的ret_val
指向地址失败,程序出现段错误。
fgets()函数的更多相关文章
- fgets函数
打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include <stdio.h> #include <stdlib.h> #i ...
- c语言中的fgets函数
fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为: char * fgets(char * string, int size, FILE * stream); 参数说明:string ...
- gets和fgets函数的区别
1. gets与fgets gets函数原型:char*gets(char*buffer);//读取字符到数组:gets(str);str为数组名. gets函数功能:从键盘上输入字符,直至接受到换行 ...
- c语言gets()函数与它的替代者fgets()函数
在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回.如果要读取一行字符串,比如: I love BIT 这种情况,scanf() ...
- fgets()函数读取键盘,去掉换行符或丢弃多余的字符
在上一遍随笔中,我们知道可以用fgets()函数来代替不安全的gets()函数.fgets函数中的第二个参数限制了读取的个数. 上篇文章也提到,fgets是会读取回车换行符的.有时候我们并不希望在字符 ...
- gets,gets_s,fgets函数
这次就说一下,gets(),gets_s(),fgets(),::::[在某一篇博客上看到的] C的标准库gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生bug: fgets ...
- PHP fgets 函数
<?php $handle=fopen("../good/html/1.txt","r"); ; //打开一个远程文件 $content="&q ...
- fgets()函数和sscanf()函数的使用方法
fgets 百度百科:从文件结构体指针stream中读取数据,每次读取一行.读取的数据保存在buf指向的字符数组中.每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),假设文件里 ...
- C语言字符串输入输出函数(gets()函数、puts()函数、fgets()函数、fputs()函数)
scanf("%s", str) 不能读取空白字符,遇到第一个空白字符就停止读取. gets(str) 读取整行输入,直至遇到换行符,丢弃换行符储存其余字符,并在末尾添加 \0.与 ...
- fgets函数执行完成后,文件指针如何移动?
用fgets执行之后,读取了文件中的一行,这时文件位置指针是自动指向文件的下一行的开头吗,还是指向当前行的结尾?如果一行的字符串没读取完会怎样? 实例结果: 如果一行的字符串没读取完会,下一次会接着上 ...
随机推荐
- JAVA中循环遍历list有三种方式
转自:https://blog.csdn.net/changjizhi1212/article/details/81036509JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常 ...
- R_基本统计分析_06
summary()提供基础的统计信息 sapply(x,FUN,options)可以指定统计函数 fivenum()可以返回图基五数 Hmisc 中的describe(data)返回变量,观测的变量, ...
- H5调起IOS原生商店支付
参考文档:http://www.html5plus.org/doc/zh_cn/payment.html 申请内购项目摘自 https://www.jianshu.com/p/1e79bfbe46e2 ...
- Androidx初尝及其新旧包对照表
x的最低实验条件 AndroidStudio 3.2.0+ gradle:gradle-4.6以上 本次实验条件: AndroidStudio 3.3 (强制要求最低gradle版本为gradle-4 ...
- mysql 的使用
1. 安装 https://dev.mysql.com/downloads/mysql/ 2. 配置 $ vim ~/.bash_profile $ export PATH=$PATH:/usr/lo ...
- AOP初识
AOP是Aspect Oriented Programing的简称,面向切面编程.AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理.缓存.对象池管理以及日志记录.AOP将这些分散在各 ...
- Winform开发1
VS的Winform开发中,TextBox可能拖过来的时候不能改变其高度,这就要在其属性Multiline为True.
- MySQL Lock--MySQL加锁学习1
准备测试数据: ## 开启InnoDB Monitor SET GLOBAL innodb_status_output=ON; SET GLOBAL innodb_status_output_lock ...
- 学习python的日常4
偏函数: 偏函数是functools模块提供的一个功能,偏函数可以通过设定参数的默认值,降低函数调用的难度 其中设定的参数默认值实际上是可以被传入为其他值的,最后创建偏函数时可接收函数对象.*args ...
- 修改bash终端命令行颜色
要修改linux终端命令行颜色,我们需要用到PS1,PS1是Linux终端用户的一个环境变量,用来说明命令行提示符的设置.在终端输入命令:#set,即可在输出中找到关于PS1的定义如下: PS1='[ ...