首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教一个fwrite的有关问题

2012-05-09 
请问一个fwrite的问题?我用fwrite将一内存缓冲区的内容一次写到文件中,这个内存缓冲区比较大,有几十M之多。

请问一个fwrite的问题?
我用fwrite将一内存缓冲区的内容一次写到文件中,这个内存缓冲区比较大,有几十M之多。当我写的文件是一个网络文件的时候,发现写失败,返回值为0.但是如果写的文件是一个本地的磁盘文件的话,就可以成功。请问一下,fwrite函数最多能将多大的内存缓冲区一次写到文件中。我想对于本地磁盘文件和网络文件是有区别的。如果大小有限制,除了分次写文件的方法外还有没有别的办法,比如更改什么配置的方法?谢谢!

[解决办法]
网络文件写失败的原因可能有以下几个方面:
·网络连接不稳定,时通时断。
·最大网络带宽受路由器限制
·最长保持连接时间受系统或服务程序限制
·远端磁盘配额满
·远端磁盘满
·本地或远端防火墙或在线杀毒软件干扰
·……

[解决办法]
出错时检查errno的值是多少了吗?

C/C++ code
/* PERROR.C: This program attempts to open a file named * NOSUCHF.ILE. Because this file probably doesn't exist, * an error message is displayed. The same message is * created using perror, strerror, and _strerror. */#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <io.h>#include <stdlib.h>#include <stdio.h>#include <string.h>void main( void ){   int  fh;   if( (fh = _open( "NOSUCHF.ILE", _O_RDONLY )) == -1 )   {      /* Three ways to create error message: */      perror( "perror says open failed" );      printf( "strerror says open failed: %s\n", strerror( errno ) );      printf( _strerror( "_strerror says open failed" ) );   }   else   {      printf( "open succeeded on input file\n" );      _close( fh );   }}Outputperror says open failed: No such file or directorystrerror says open failed: No such file or directory_strerror says open failed: No such file or directory
[解决办法]
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\fwrite.c
C/C++ code
...113:        _VALIDATE_RETURN( (stream != NULL) ,EINVAL, 0);114:        _VALIDATE_RETURN( (buffer != NULL) ,EINVAL, 0);115:        _VALIDATE_RETURN(num <= (SIZE_MAX / size), EINVAL, 0);...
[解决办法]
可以采用流的方式
[解决办法]
网络编程不懂,不过前两天看 深入理解计算机系统,有

we recommend avoiding the standard I/O functions for input and output on network sockets.

热点排行