Chinaunix首页 | 论坛 | 博客
  • 博客访问: 110580
  • 博文数量: 52
  • 博客积分: 2050
  • 博客等级: 大尉
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 15:52
文章分类

全部博文(52)

文章存档

2011年(1)

2010年(2)

2009年(49)

我的朋友

分类: C/C++

2009-06-06 19:26:15

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个,记住。
阅读(712) | 评论(0) | 转发(0) |
0

上一篇:linux下多进程的调试

下一篇:不可靠信号

给主人留下些什么吧!~~