linux文件操作-标准I/O操作--fgets与gets

时间:2021-08-13 12:58:31

fgets与gets


1 gets介绍


[函数原型]
               #include <stdio.h>
               char * gets ( char * str );


[函数描述]
               从标准输入里读取字符串。从标准输入里读出字符串并将其存储在字符数组str里,直到遇到换行符"\n"或者文件终止符EOF
               如果遇到换行符"\n",从标准输入到字符数组str的复制操作终止。
               复制结束后,系统自动在str后面加入一个空字符"\0"


[参数介绍]
               str是一个字符数组。


[返回值]
               如果成功,怎返回指向str的指针
               如果出现读错误ferror,则返回一个空指针。并且str内容不会改变。


[注意事项]
               gets函数不同于fgets函数,(1)gets仅使用stdin作为输入; (2)gets再识别到换行符"\n"即停止复制,并且并不将换行符复制到str中; (3)gets的函数格式决定了,用户不能决定源里面的哪些字符进行复制,gets只有在遇到"\n"和eof才会结束复制。

/* gets example */
#include <stdio.h>
#include <string.h>
int main()
{
char str [10];
printf ("enter string: ");
gets (str);
printf ("an array of chars is: %s the size of array is %d\n",str,strlen(str));
return 0;
}
结果是:

linux文件操作-标准I/O操作--fgets与gets

2 fgets介绍


[函数原型]
               char * fgets ( char * str, int num, FILE * stream );


[函数描述]
               从文件流里面读取字符串。读取的字符串长度不大于(num-1);
               遇到换行符"\n"或者end-of-file符时,复制操作终止;
               fgets在遇到"\n"时任将其复制到str中;
               复制结束后,自动在字符数组str后面加入"\0"。


[参数介绍]
               str 一个指向字符数组的字符指针
               num 向str复制的最大字符个数,包括系统自动加上的空字符"\0"
               stream 一个指向文件对象的文件指针,stdin也可以作为输入的参数。


[返回值]
               如果成功,怎返回指向str的指针
               如果出现读错误ferror,则返回一个空指针。并且str内容不会改变。


[注意事项]
               fgets函数不同于gets函数,(1)fgets的输入是一个流,不仅仅是stdin; (2)程序员可以指定复制的字符长度; (3)fgets在遇到换行符"\n"停止的同时,也将"\n"作为合法字符复制到str中。

#include <stdio.h>
#include <string.h>
int main()
{
FILE * pFile;
char mystring [100];
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL)
perror ("Error opening file");
else {
if ( fgets (mystring , 100 , pFile) != NULL )
{
printf("%d\n",strlen(mystring));
puts (mystring);
}
fclose (pFile);
}
return 0;
}


结果:

linux文件操作-标准I/O操作--fgets与gets


参考网址: 

http://www.cplusplus.com/reference/cstdio/gets/?kw=gets

http://www.cplusplus.com/reference/cstdio/fgets/