前言
前一节讲了刷新缓存函数 无缓存函数都可以 不输入到内核态的问题
并且注意 fputs 因为是写函数 同时他可以有输出功能。
这节讲讲 puts fputs fgets gets 函数 会不会把换行符放到缓存里面 验证一下
puts 函数 单独使用
#include<stdio.h>
int main()
{
int rst = puts("hello");
printf("byte is %d\n",rst);
return 0;
}
puts 输出时会添加新行符
gets fputs 函数 配合使用
#include<stdio.h>
int main()
{
int len;
char writebuff[128]={0};
gets(writebuff);//输出
len=strlen(writebuff);//计算字符串长度
printf("len is %d\n",len);
fputs(writebuff,stdout);
return 0;
}
gets 是输入函数 就是在读取键盘输入的值
并且配合fputs的功能使用 gets 看效果
有警告 没事 因为我的输入函数 gets 形参数组我给了明确的大小 导致的
gets(输入) 的长度没变 所以换行符没加进去
fputs (输出)没有在结束前换行 所以换行符没加进去
所以 fputs gets 都不会把换行符放进缓存
fgets fputs 函数 配合使用
fgets 是输入 把最后形参改为 stdin 就行了
#include<stdio.h>
int main()
{
int len;
char writebuff[128]={0};
fgets(writebuff,128,stdin);// 输入
len=strlen(writebuff);//计算字符串长度
printf("len is %d\n",len);
fputs(writebuff,stdout);//输出
return 0;
}
这里的 fgets 会把换行符放进缓存
printf有一个换行符 这就导致了 fputs原本没有换行符放进存放的
应该后面是不换行的 导致现在在后面换行了
不用太纠结。
主要是明白fgets的功能就行了