fgets函数返回值,关于C语言fgets()读取文件?
fgets函数返回值,关于C语言fgets()读取文件?详细介绍
本文目录一览: c语言中fgets函数的返回值,什么情况下返回空指针。
获取失败或者读取到文件末尾返回NULL
fgets 是系统输入函数,从文件流读入一行字符串,含空格键等,函数原型是:
char * fgets ( char * str, int num, FILE * stream );
输入成功时,返回 char 型指针,指向 读入的字符串内容,含换行键(gets 类似,但不含换行键)。
输入失败时,返回 NULL。(与此同时 ,自动设置了 feof, ferror 的状态标志)。
c语言中的fgets函数。
从流中读一行或指定个字符,
原型是char*fgets(char*s,intn,file*stream);
从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回null。
形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
fgets的返回值是个指针,*fgets(buffer,100,stdin)就是取返回指针所指向地址的第一个字符,fgets的返回值是char*.要是输入一串字符,返回的第一字符一定不是\n如果要是一个空行,第一个一定是\n,所以会推出循环,如果while中的两个条件都满足,就会进入循环继续计算
函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:
fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过
n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。
1)
在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2)
fgets函数也有返回值,其返回值是字符数组的首地址。
哦
这里是特殊情况。
initial这个数组长度只有2,
读进来一个数据就满了(因为第二个位置要写0呢。
所以后面的回车没被读进来,因为缓冲区满了。
fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:
char
*
fgets(char
*
string,
int
size,
FILE
*
stream);
参数说明:
string为一个字符数组,用来保存读取到的字符。
size为要读取的字符的个数。如果该行字符数大于size-1,则读到
size-1
个字符时结束,并在最后补充'
\0';如果该行字符数小于等于
size-1,则读取所有字符,并在最后补充
'\0'。即,每次最多读取
size-1
个字符。
stream为文件流指针。
【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。
注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数
FILE
*stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。
c语言fgets函数返回值问题,要是读到一串字符的末尾,那么函数返回值是NULL吗?还是说只有读取
可以辅助判断:if ( !feof(fp) ) { if ( fgets(buffer,256,fp)==NULL ) break; ... }
关于 C 语言中的 fgets( ) 函数,该函数的作用就是从文本文件中读取一行文本内容。该函数执行成功将返回读入的字符串 buffer,读取失败或读到文件结尾返回NULL。
例如如下代码:
#define MAX 300
void main( )
{
unsigned char buffer[MAX] ;
FILE * fpr ;
fpr = fopen("my_text.txt","r);
if( fpr == NULL ) /*文本文件打开失败,则退出 */
{
printf("File open error !\n");
exit(1);
}
fgets(buffer,MAX, fpr); /* 从文本文件中读取一行数据 */
while( ! feof(fpr) ) /* 当文本文件未结束时 */
{
printf("buffer is: %s", buffer) ; /* 输出刚刚读取的文本文件的内容 */
fgets(buffer,MAX,fpr); /* 继续读取下一行数据 */
}
fclose(fpr); /* 关闭文件 */
}
C语言问题,请教这个fgets为什么会返回null
fgets函数原型char *fgets(char *buf, int bufsize, FILE *stream);参数*buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。*stream: 文件结构体指针,将要读取的文件流。含义:从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。用法:
#include
#include
int main ( void ){ FILE*stream; char string[]="This is a test"; char msg[20]; stream=fopen("tmp.dat","w+"); fwrite(string,strlen(string),1,stream); fseek(stream,0,SEEK_SET); fgets(msg,strlen(string)+1,stream); printf("%s",msg); fclose(stream); return 0;}
C语言里fgets函数怎么用?
fgets(由文件中读取一字符串)
表头文件
include
定义函数
char * fgets(char * s,int size,FILE * stream);
函数说明
fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。
返回值
gets()若成功则返回s指针,返回NULL则表示有错误发生。
范例
#include
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
执行
this is a test /*输入*/
this is a test /*输出*/
求助~c语言fgets()怎么写啊
#include
#include
int main(void)
{
FILE *stream;
char string[] = "This is a test";
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;
}
fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。
int main()
{
FILE *pf=fopen("1.MP3","rb");
FILE *pf1=fopen("2.MP3","wb");
char buf[1024];
while(!feof(pf))
{
memset(buf,0,1024);
fread(buf,1,1024,pf);
fwrite(buf,1,1024,pf1);
}
fclose(pf);
fclose(pf1);
return 0;
}
你在试下,肯定行!
fgets函数的作用是从指定文件读入一个字符串。例如:
fgets(str,n,fp);
n为要求得到的字符,但只从fp指向的文件输入n-1个字符,然后在最后加一个'\0'字符,因此得到的字符串共有n个字符,把他们放到字符数组str中。如果在读完n-1个字符之前遇到换行符或EOF,读入结束。fgets函数返回值为str的首地址。
fputs函数的作用是向指定的文件输入一个字符串。例如:
fputs("China",fp);
把字符串“China”输出到fp指向的文件。fputs函数中第一个参数可以是字符串常量、字符数组名或字符型指针。字符串末尾的'\0'不输出。若输出成功,函数值为0;失败时,为EOF。
还有在使用完一个文件后应该用fclose函数关闭它,否则会造成文件丢失数据。
另外,站长团上有产品团购,便宜有保证
关于C语言fgets()读取文件?
你的第二行应该没有回车加换行的,文件结尾有EOF,至于怎么读取三个字符的不用深究吧,有输入缓冲区
。fgets()在到达行末时停止
1、fgets函数:
原型:char
*
fgets(char
*
buf,
int
bufsize,
file
*
stream);
功能:从文件结构体指针stream中读取数据,每次读取一行;
说明:读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋值为\0)。如果该行不足bufsize个字符,则读完该行就结束,如果该行超过bufsize-1个字符,则fgets只返回一个不完整的行,buf缓冲区以\0字符结束,下一次fgets调用会继续读取该行剩余的字符;
头文件:stdio.h;
返回值:若读入成功,返回与参数buf相同的字符指针,若读入过程中遇到eof或发生错误,返回null指针。所以当遇到返回值为null的情况时,应使用ferror或feof函数检查是发生错误还是遇到eof。
2、例程:
#include
int a;
char b,c[100];
int main(){
file * fp1 = fopen("input.txt", "r");//打开输入文件
file * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==null || fp2==null) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
fscanf(fp1,"%d",&a);//从输入文件读取一个整数
b=fgetc(fp1);//从输入文件读取一个字符
fgets(c,100,fp1);//从输入文件读取一行字符串
printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
fputs(c,fp2);//向输出文件写入一行字符串
fputc(b,fp2);//向输出文件写入一个字符
fprintf(fp2,"%d",a);//向输出文件写入一个整数
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}
fgets(buffer,4,read);从流中读取buf_size-1个字符,除非读完一行,这边就是4-1=3啦
最后一个是'\0'
fgets函数用法
fgets函数用法有:数据类型、变量赋值、控制流、函数定义、模块导入。
1、数据类型:fgets支持各种数据类型,包括数字、字符串、列表、元组、集合和字典等。
2、变量赋值:fgets中的变量可以直接进行赋值,不需要事先声明变量类型。例如:x=5。
3、控制流:常用的控制流结构包括if语句、for循环和while循环。可以使用缩进来表示代码块。
4、函数定义:可以使用def关键字定义函数,因为函数可以接受参数,并返回一个值。
5、模块导入:fgets中可以使用import语句导入模块,从而使用模块中的函数和变量等。
fget函数怎么用。菜鸟请教。。。
fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。