fgets函数,是一个从文件流得到输入的字符串输入函数
原型为 char * fgets(char *s,int size ,FILE *stream);
从文件流读入字符串到s中,当然s是有空间的,不然会产生错误,读入多少字符呢?size-1个,最后留一个空间干什么?自动给你加上'\0'
返回值:如果成功,指向s的指针。
#include
int main()
{
char buffer[4];
char *f;
while(1)
{
f = fgets(buffer,4,stdin);
puts(f);
}
return 0;
}
运行结果:
[root@rain test]# gcc -o f fgets1.c
[root@rain test]# ./f
we are students so
we
are
st
ude
nts
so
很明显看出,fgets的运行过程。
但是在tcp中,有点问题
read的原型是 read(int fd,char *buffer,int size)
请求size个字符,如果对方没有size个怎么办?那不要紧,只取文件描述符中有的。
这个时候你取的时候,注意buffer最后加0
buffer[0] = 0;
即加'\0'
如果你的请求比对方少怎么办?
那可以用一个循环,一直请求,知道请求到read的返回值为0,结束。
用write发送的时候要注意,你有多少数据就发送多少,strlen个,记住。
阅读(730) | 评论(0) | 转发(0) |