求教下各位我的程序为什么不能写到文件?

C、C++和Java语言
回复
magicli05
帖子: 5
注册时间: 2007-10-16 11:24
送出感谢: 0
接收感谢: 0

求教下各位我的程序为什么不能写到文件?

#1

帖子 magicli05 » 2007-10-16 16:07

int s=socket(AF_INET,SOCK_STREAM,0);
if(s<0){
cout<<"create socket error!"<<endl;
return 0;
}


struct sockaddr_in my_client_sock;
memset(&my_client_sock,INIT,sizeof(my_client_sock));
my_client_sock.sin_family=AF_INET;
my_client_sock.sin_port=htons(PORT);

struct hostent *p;
if((p = gethostbyname(head.c_str()))==NULL){
cout<<"USAGE:#rss.exe URL"<<endl;
}


ent_sock.sin_addr.s_addr=p->h_addr_list[0];
memcpy(&my_client_sock.sin_addr.s_addr, p->h_addr,p->h_length);


int r = connect(s,(struct sockaddr*)&my_client_sock,sizeof(my_client_sock));
if(r<0){
cout <<"connect error"<<endl;
exit(0);
}else{
cout <<"connect ok"<<endl;
}

string get="GET "+end+" HTTP/1.1\r\nAccept:*/*\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\nHost: "+head+"\r\nReferer: http://"+head+"\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n";
write(s,get.c_str(),get.size());//point

if(access("xml/xml.xml",F_OK)){
system("rm -f xml/xml.xml");
}

char cache_buff[BUFF];
string buff1;
int fd=open("xml/xml.xml",O_CREAT|O_RDWR|O_APPEND);
while(true){
string ss;
memset(&cache_buff,INIT,sizeof(cache_buff));
memset(&buff,INIT,sizeof(buff));
int num=read(s,cache_buff,sizeof(cache_buff));


buff1.assign(cache_buff);
for(int i =0;i<buff1.length();i++){
if(buff1.at(i)=='<'){
ss.assign(buff1.substr(i,buff1.length()));
break;
}
}

cout<<ss<<endl;
if(num<=ERROR){

cout<<"load file over"<<endl;
write(fd,ss.c_str(),ss.size());
break;
}

}

close(fd);
close(s);

return 1;




head是域名end是域名后面的,比如head=www.cbbate.com end=/backend.php
INIT,ERROR是我定义的宏.都是0;各位看看我该如何解决?我的代码不好看,各位见笑 了.
magicli05
帖子: 5
注册时间: 2007-10-16 11:24
送出感谢: 0
接收感谢: 0

#2

帖子 magicli05 » 2007-10-16 16:09

能够得到正确的的string 到ss但是无法写入,,请教下各位了!
guawoo
帖子: 9
注册时间: 2007-09-02 21:55
送出感谢: 0
接收感谢: 0

#3

帖子 guawoo » 2007-10-16 22:48

write写入的值一般是写的内核缓存里吧,要过一段时间才会写到文件里吧
看书上有专门介绍这个问题的一节,,你为什么不用C++的文件流来写入文件

我也是新手,可能上面的回答不对,望达人解答
回复

回到 “C/C++/Java”