中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
这个Read()错在哪里?
作者:未知 时间:2005-09-13 23:29 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:这个Read()错在哪里?
引用:
/usr/include/unistd.h

里有个函数是read()

自己查查。。你自己定义的函数(read())改名为read_new()吧。。。。
 谢谢qing!!!
我太粗心了,函数的命也叫read()了,应该换个新的名字
 
怎么能这么写呢?
if((n=read(fd,buf,MAXLINE)) != n ) {
应该定义一个局部变量
 请问怎么定局部变量呢??
 if((n=read(fd,buf,MAXLINE)) != n )
应该是!=MAXLINE吧?
 想想都不对,应该是 <0 ,一时没注意。。
 我不知道你到底要实现什么功能,根据你写的函数,似乎下面这个就可以:
代码:
 
# cat Read.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#define MAXLINE 8192
ssize_t
read(int fd, void * buf,ssize_t n)
{
        if((n=read(fd,buf,MAXLINE)) != n ) {
               printf("read error\n");
               return(-1);
        }
        return(n);
}
 
              
/mnt/d/err_pro# gcc -c Read.c
Read.c:7: conflicting types for `read'
/usr/include/unistd.h:310: previous declaration of `read'
/mnt/d/err_pro#

 

ssize_t
myread(int fd, void * buf,ssize_t n)
{
  if(read(fd, buf, n) != n){
    printf("read error\n");
    return(-1);
  }
  return(n);
}
 
最初由 libinary 发表
我不知道你到底要实现什么功能,根据你写的函数,似乎下面这个就可以:
代码:
ssize_t
myread(int fd, void * buf,ssize_t n)
{
  if(read(fd, buf, n) != n){
    printf("read error\n");
    return(-1);
  }
  return(n);
}


谢谢!!好象写得复杂了。。我的目的是想没个库函数都写个这样有出错的自定义函数。。用的时候就不需要检查错误了。。但Read()觉得太简单了。。
 看unp.h
里面的包裹函数错误处理做的很好啊
关闭本页  
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有