黑马程序员技术交流社区
标题:
fgets()和fputs()函数
[打印本页]
作者:
ldk1991125
时间:
2016-6-29 21:18
标题:
fgets()和fputs()函数
fgets(),fputs()函数使用
1.fgets()函数的使用
该函数是一个文件操作相关的函数,暂时使用这个函数可以从键盘接收一个字符串,保存到数组中。
scanf("%s",str); //缺点:不能接收空格
gets(str); //可以接收空格,但会有一个警告,不安全
fgets()是一个安全的字符串接收函数。例如:
char ch[5]; //如果我们使用fgets接收字符串数组中最多存放四个可见字符,最后一位存放'\0';当输入的字符串长度>数组的长度,此时gets会自动把数组的最后一个元素变成\0。当输入的字符串<数组的长度时,fgets会接收回车
fgets()的原型是
char*fgets(char*s,int n,FILE*fp);
参数的数量比较多,有三个。而fgets相比于gets有一个显著的差别就是fgets会将行末的换行符算到读入的字符串里面。所以相同且正常的情况下(输入无错误,缓冲区足够大),fgets读入的字符串会比gets在末尾'\0'前面多一个换行符;行长度超过缓冲区大小时只读入前n-1个字符。
#include <stdio.h>
#include <string>
int main(int argc,const char*argv[]){
char ch[5];
fgets(ch,sizeof(ch),stdin);
if(ch[strlen(ch)-1]=='\n') ch[strlen(ch)-1]='\0';
for(int i=0;i<5;i++){
printf("%d\t",ch[i]);
}
printf("--->%s\n",ch);
return 0;
}
2.fputs()也是一个文件操作相关函数
格式:
fputs(数组名,stdout); //表示将数组写到stdout中;fputs不能自动换行,也不能进行格式化的输出。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2