当前位置:首页 » 编程语言 » c语言fgets函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言fgets函数

发布时间: 2022-02-25 20:54:11

c语言 fgets()函数

函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:
fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过
n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。
1)
在读出n-1个字符之前,如遇到了换行符或eof,则读出结束。
2)
fgets函数也有返回值,其返回值是字符数组的首地址。

㈡ C语言文件习题:在C语言中,函数fgets(str,n,fp)的功能是_________。

选择D.从文件fp中读取长度不超过n-1的字符串,存入str指向的内存空间。

fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。

㈢ 求助~c语言fgets()怎么写啊

#include <string.h>
#include <stdio.h>
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作为函数值返回。

㈣ C语言里fgets函数怎么用

fgets(由文件中读取一字符串)
表头文件
include<stdio.h>
定义函数
char * fgets(char * s,int size,FILE * stream);
函数说明
fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。
返回值
gets()若成功则返回s指针,返回NULL则表示有错误发生。
范例
#include<stdio.h>
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
执行
this is a test /*输入*/
this is a test /*输出*/

㈤ c语言中fgets的返回值类型

1、如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。如果发生错误,返回一个空指针。

在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则stream保持原来的内容,返回NULL;

2、如果发生读入错误,error指示器被设置,返回NULL,stream的值可能被改变。

如果文件中的该行,不足n-1个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过n-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。

函数成功将返回stream,失败或读到文件结尾返回NULL。因此不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

(5)c语言fgets函数扩展阅读

函数使用:

1、同时可以用作键盘输入:fgets(key,n,stdin)且还必须:key[strlen(key)]=''或者key[n-1]=''

2、还有种程序经常使用的方法:key[strlen(key-1)]=0x00;

3、与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题。

㈥ C语言关于fgets()

fgets返回有两种情况,一种是成功的读到了一整行。另一种是读取的字符数达到了第二个参数的值,这里就是n。
如果是第一种情况,那会包含\n,也就是find的情况,把\n替换成\0.
如果是第二种情况,就不会有\n,表示没有读完。后续的while把这一行的剩余数据读走,并抛弃。

㈦ C语言文件操作中fgets函数的使用

#include<stdio.h>
#include<string.h>

//#pragmawarning(disable:4996)
constintMAXLEN=1000;

intmain(){
chars[MAXLEN];//={0};
//memset(s,0,sizeof(s));//s要被多次使用的
FILE*p=fopen("E:\输入信息得文本.txt","w");
if(p==NULL){
printf("不能打开文件。 ");
return1;
}
while(1){
//gets(s);
fgets(s,MAXLEN,stdin);
//fgtes()函数读取的串中通常含有' '
intlen=strlen(s);
if(s[len-1]==' ')s[len-1]='';
if(strcmp(s,"exit")==0)break;
fprintf(p,"%s ",s);
}
fclose(p);
printf("end ");
return0;
}

㈧ C语言里fgets函数怎么用发一个简单的函数给我看下。谢谢。

-----------------------------------------------------------------------------------------------------------------------
fgets函数原型如下:
char *fgets(char *s,int n,FILE *stream);
它一次从文件中读取一行,包括换行符,放入字符串s中,并且加上字符串结束标志符'\0'。参数n代表缓冲区s中最多能容纳多少个字符(不算结尾标志符'\0')。
fgets函数返回一个char类型的指针,和s指向同一个地方。如果在没有数据可以读取,那么函数就返回NULL。
----------------------------------------------------------------------------------------------------------------------
下面的程序将文本文件students.txt的内容依次读到字符串s中输出
#include<stdio.h>
#include<stdlib.h>
#define MAX 200
int main()
{
FILE *fpSrc;
char szLine[MAX];
fpSrc=fopen("students.txt","r");
//文件要指明路径
if(NULL==fpSrc)
{
printf("文件读取失败!");
exit(1);
}
while(fgets(szLine,MAX-1,fpSrc))//从文件中读取一行写入到字符串szLine中,直到fgets函数返回NULL
printf("%s\n",szLine);//打印出读取的内容
fclose(fpSrc);//关闭文件流
return 0;
}

㈨ 求教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*.要是输入一串字符,返回的第一字符一定不是 如果要是一个空行,第一个一定是 ,所以会推出循环,如果while中的两个条件都满足,就会进入循环继续计算。

(9)c语言fgets函数扩展阅读:

一、函数原型是:char *fgets(char *s, int n, FILE *stream);

从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋''),如果文件中的该行,不足bufsize-1个字符,则读完该行就结束。

如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。

函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

二、与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题。

三、功能:

1、《UNIX 环境高级编程》中指出,每次调用fgets函数会造成标准输出设备自动刷清!案例详见《UNIX环境高级编程(第二版)》中程序清单1-5和课后习题5.7,习题5.7的答案中给出了相关的论述。

2、初入门者,大多数是在WINDOWS下,使用VS进行练习的。此环境下,对注意1中的情况进行测试,并不能看到案例中所描述的情景,因为具体的实现不同。

stream文件流指针体指向文件内容地址的偏移原则

例:

如果一个文件的当前位置的文本如下

Love, I Have

Since you can do it.

如果用fgets(str1,6,file1);去读取

则执行后str1 = "Love," ,读取了6-1=5个字符

这个时候再执行fgets(str1,20,file1)则执行后str1 = " I Have "

而如果

fgets(str1,23,file1);

则执行str1="Love ,I Have",读取了一行(包括行尾的' ',并自动加上字符串结束符''),当前文件位置移至下一行,虽然23大于当前行上字符总和,可是不会继续到下一行。而下一次调用fgets()继续读取的时候是从下一行开始读。

㈩ c语言中的fgets函数。

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()使用不当造成缓存溢出的问题。