我正在研究一个Linux代理程序,我遇到了这个问题.这是我正在努力的代码.
while(n = Rio_readlineb_w(&rio_client, buf, MAXLINE) > 0){
printf("%d\n", n);
Rio_writen_w(serverfd, buf, n);
}
Run Code Online (Sandbox Code Playgroud)
这是'Rio_readlineb_w'的包装函数
ssize_t Rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen)
{
ssize_t rc;
if((rc = rio_readlineb(rp, usrbuf, maxlen)) < 0 )
printf("Rio_readlineb error");
printf("%d\n", rc);
return rc;
}
Run Code Online (Sandbox Code Playgroud)
变量'rc'表示rio_readlineb函数读取的字符数.在包装函数中使用printf,我检查了rc正是读取的字符数.但是,上部while语句的变量"n"始终为1.我无法找出错误.你觉得回报价值怎么改变了?
这是运营商优先权的问题.
while(n = Rio_readlineb_w(&rio_client, buf, MAXLINE) > 0){
Run Code Online (Sandbox Code Playgroud)
应该:
while((n = Rio_readlineb_w(&rio_client, buf, MAXLINE)) > 0){
Run Code Online (Sandbox Code Playgroud)
否则,您将比较结果(0或1)分配给n.