fgets函数怎么用,fgets函数用法
fgets函数怎么用,fgets函数用法详细介绍
本文目录一览: 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 /*输出*/
fgets函数用法
fgets函数功能为从指定的流中读取数据,每次读取一行。其原型为:char *fgets(char *str, int n, FILE *stream);从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。
扩展资料:
一、函数原型是:char *fgets(char *s, int n, FILE *stream);
从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足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中的情况进行测试,并不能看到案例中所描述的情景,因为具体的实现不同。
fget函数怎么用。菜鸟请教。。。
fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。
linux中fgets函数怎么用
fgets函数是从输入流中读取一个字符串,它是遇到换行符,或者传输了限定的字符数量,或者遇到EOF文件尾就停止(它会把换行符也加到接收字符串里面)。fgets函数的原型是:
char *fgets(char *s, int n, FILE *stream);
函数参数说明:第一个参数是接收参数,用于接收输入文件流的字符串,第二个参数n是字符串传输长度限定参数,表示当接收了n-1个字符时停止写入,第三个参数是文件流(就是fopen函数返回的文件流),也可以是输入流stdin。使用这个函数需要include头文件
。
fgets函数和scanf的%s参数的区别是:scanf接收输入字符串时,是遇到空白字符就停止,而且scanf无法限定接收字符串的长度。
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的用法
fgets(str1,11,stdin); -- fgets 从文件输入流读取一行字符串(分隔符是换行键),包括空白到 str1 里。stdin 表示标准输入流,就是键盘输入。11 (实际上用10) 是 最多读入的字符个数。
当一行(含'\n') 不足11个字符 时,读到 '\n',包括 '\n' ,放入str1
当一行超过10个字符时,只读10个字符,放入str1。
照理你应当声明:
char str1[11] ,str2[11]; 而不是 [10].
---------
当你拍入 1234567890ABCDEFG,这串东西进了 输入缓冲区
fgets(str1 。。)到 输入缓冲区 用去了 1234567890, 还余下 ABCDEFG
fgets(str2 。。)接着 到 输入缓冲区,从余下的东西里 取数。打算 取 11 (实际上用10)个字符,但遇到了 Enter 键,所以 读入的内容是 ABCDEFG
输出语句就不用说了。
fgets(char* s, int size, FILE* stream) :
最多在stream中读取size-1个字符存入s指向的缓冲区。
遇到EOF(文件结束符)或'\n'结束,('\n'放入s中)
并在末尾加个\0。
fgets(str1,11,stdin); -- fgets 从文件输入流读取一行字符串(分隔符是换行键),包括空白到 str1 里。stdin 表示标准输入流,就是键盘输入。11 (实际上用10) 是 最多读入的字符个数。
当一行(含'\n') 不足11个字符 时,读到 '\n',包括 '\n' ,放入str1
当一行超过10个字符时,只读10个字符,放入str1。
照理你应当声明:
char str1[11] ,str2[11]; 而不是 [10].
---------
当你拍入 1234567890ABCDEFG,这串东西进了 输入缓冲区
fgets(str1 。。)到 输入缓冲区 用去了 1234567890, 还余下 ABCDEFG
fgets(str2 。。)接着 到 输入缓冲区,从余下的东西里 取数。打算 取 11 (实际上用10)个字符,但遇到了 Enter 键,所以 读入的内容是 ABCDEFG
输出语句就不用说了。
C语言 怎么用fgets()读取一个txt文件中的任意行的信息
#include "stdio.h"
#include "string.h"
void main()
{
int n;
FILE *fin;
char s[25];
fin=fopen("c:\\a.txt","r");
fgets(s,25,fin);/*用fgets读第一行到数组s中*/
n=strlen(s);
fseek(fin,n+1,SEEK_SET);/*将文件指针移到下一行*/
fgets(s,25,fin);/*读取第二行的字符串*/
printf("%s",s);
}
这个是我写的一个,如果你想读到第n行的话,用一个for循环控制使文件指针移到第n行就行了。
如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上’\n’),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。
如果使用fgets() 读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的’\n’换行,一个保存字符串本身的结束标识’\0’),文件并不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。
哥哥帮你写一个给你参考!
键盘输入一个数字代表你要读的行,你爱读哪行就哪行!
#include
#include
#include
int main(void)
{
FILE *fp = NULL;
char buf[1024] = {0};
int count = 0;
int row = 0;
int ch = 0;
fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("Cann't open the file!\n");
exit(1);
}
else
{
while (1)
{
printf("Input a row you want to read: \n");
scanf("%d", &row);
fflush(stdin);
while (!feof(fp))
{
fgets(buf, 1024, fp);
count++;
if (row == count)
{
printf("%s", buf);
}
memset(buf, 0, sizeof(buf));
}
count = 0;
rewind(fp);
printf("go on? [y/n]: ");
scanf("%c", &ch);
fflush(stdin);
if (ch == 'y' || ch == 'Y')
{
continue;
}
else
{
break;
}
}
fclose(fp);
}
return 0;
}
首先定义文件指针 fp=fopen("文件名称","r");然后用fseek()设置文件指针的位置;最后用fgets()得到行信息;
int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
fgets()函数原型char *fgets(char *buf, int bufsize, FILE *stream);参数*buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。*stream: 文件结构体指针,将要读取的文件流。
怎么用fgets 函数把输入的字符串输出到屏幕
这个函数用来输入字符串的,输出到屏幕可以用puts(str)来实现的。
fgets ()是输入字符到程序中,要输出应该用printf()之类的输出函数才可以。
#include
#define BUFFER_SIZE 1000int main(){ char buffer[BUFFER_SIZE]; fgets(buffer, BUFFER_SIZE, stdin); /* stdin指向输入流 */ printf("%s\n", buffer); return 0;}BUFFER_SIZE是缓冲区的大小,可以自己改
c语言fgets里怎么换行
比较简单的方法你可以在需要换行的,用特殊字符来替代文本中的的换行符,比如说是QWE^TY(不一定是^,总之是你不会用到的字符就行了),之后读取之后,再把^替换为\n就行了。
fgets函数功能为从指定的流中读取数据,每次读取一行。其原型为:char *fgets(char *str, int n, FILE *stream);从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止。楼主没有说清具体要执行的规则,只有一个例子。如果是固定的第一行以及从此行中截取前三个字符为一行,这就比较容易处理。下面是程序的代码和文件内容以及运行截图:#includeint main(){ FILE *fp; char s[300]; fp=fopen("test.txt","r"); fgets(s,4,fp); printf("%s\n",s); while(!feof(fp)) { fgets(s,300,fp); printf("%s",s); } return 0;}